Skip to content

Commit 6c36e8f

Browse files
committed
Adiciona documentação e melhora a configuração do Groq Laravel
Inclui um arquivo de changelog e contribuições, além de documentar instalação, configuração, tratamento de erros e exemplos práticos. Essas melhorias visam facilitar a integração do pacote com aplicações Laravel, promovendo uma experiência de uso mais intuitiva e permitindo que desenvolvedores contribuam de maneira mais eficiente. A implementação de testes abrangentes também assegura a confiabilidade do pacote.
1 parent 62af4e4 commit 6c36e8f

File tree

10 files changed

+709
-38
lines changed

10 files changed

+709
-38
lines changed

CHANGELOG.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Changelog
2+
3+
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
4+
5+
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
6+
e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR/).
7+
8+
## [0.0.8] - 2024-03-XX
9+
10+
### Adicionado
11+
- Novo arquivo `.env.example` com exemplos de configuração da API Groq.
12+
- Suporte para configuração de múltiplas instâncias da API Groq.
13+
- Novos métodos de validação em requisições para facilitar a integração da API.
14+
- Implementação de controle de taxa para evitar abusos da API.
15+
- Adição de testes abrangentes, incluindo testes de integração, unitários e de configuração.
16+
- Novo middleware `GroqRateLimiter` para limitar requisições à API.
17+
- Arquivos de linguagem para suporte a internacionalização de mensagens de erro.
18+
19+
### Alterado
20+
- Atualização do README.md com documentação simplificada e exemplos práticos de uso.
21+
- Refatoração do código para melhorar a legibilidade e manutenibilidade.
22+
- Expansão da configuração com variáveis para ajuste de modelo e limites de taxa.
23+
- Atualização da fachada Groq para acesso simplificado aos métodos da biblioteca GroqPHP.
24+
- Melhoria na flexibilidade de configuração da integração com a API Groq.
25+
26+
### Corrigido
27+
- Correção de problemas de compatibilidade com diferentes versões do Laravel.
28+
29+
### Segurança
30+
- Implementação de melhores práticas de segurança na manipulação de chaves de API.
31+
32+
## [0.0.7] - 2024-XX-XX
33+
34+
### Adicionado
35+
- Versão inicial do pacote Groq Laravel.
36+
- Integração básica com a API Groq.
37+
- Configuração inicial do pacote.
38+
39+
[0.0.8]: https://github.com/lucianotonet/groq-laravel/compare/v0.0.7...v0.0.8
40+
[0.0.7]: https://github.com/lucianotonet/groq-laravel/releases/tag/v0.0.7

CONTRIBUTING.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Contribuindo para o Groq Laravel
2+
3+
Agradeço seu interesse em contribuir para o Groq Laravel! Para garantir que suas contribuições sejam aceitas e integradas de forma eficiente, siga estas diretrizes:
4+
5+
## Como Contribuir
6+
7+
1. **Fork o repositório**: Crie uma cópia do repositório em sua conta do GitHub.
8+
2. **Crie uma nova branch**: Antes de fazer alterações, crie uma nova branch para suas modificações. Use um nome descritivo para a branch, como `feature/nova-funcionalidade` ou `bugfix/corrigir-erro`.
9+
```bash
10+
git checkout -b minha-nova-funcionalidade
11+
```
12+
3. **Faça suas alterações**: Realize as modificações necessárias no código. Certifique-se de seguir o estilo de codificação do projeto e adicionar comentários onde necessário.
13+
4. **Teste suas alterações**: Execute os testes existentes e adicione novos testes, se aplicável, para garantir que suas alterações não quebrem a funcionalidade existente.
14+
```bash
15+
vendor/bin/phpunit
16+
```
17+
5. **Envie um Pull Request**: Após concluir suas alterações, envie um Pull Request para o repositório original. Descreva suas alterações de forma clara e explique o motivo das modificações.
18+
19+
## Diretrizes de Código
20+
21+
- **Consistência**: Mantenha a consistência com o estilo de codificação existente.
22+
- **Documentação**: Adicione ou atualize a documentação conforme necessário.
23+
- **Testes**: Sempre inclua testes para novas funcionalidades ou correções de bugs.
24+
25+
## Relatar Problemas
26+
27+
Se você encontrar um bug ou tiver uma sugestão de melhoria, sinta-se à vontade para abrir uma nova issue no repositório. Forneça o máximo de detalhes possível para que eu possa entender e reproduzir o problema.
28+
29+
Agradeço novamente por sua contribuição e por ajudar a melhorar o Groq Laravel!

README.md

Lines changed: 74 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,104 @@
11
# Groq Laravel
22

3-
Groq Laravel is a powerful package that provides seamless integration between Laravel applications and the Groq API, enabling you to leverage the capabilities of language models (LLMs) like LLaMa directly within your PHP projects.
3+
Groq Laravel é um pacote poderoso que fornece integração perfeita entre aplicações Laravel e a API Groq, permitindo que você aproveite a velocidade ultra-rápida de inferência de IA com alguns dos LLMs abertos mais populares, como o Llama3.1 ou Mixtral, em seus projetos PHP.
44

55
## Features
66

7-
- **Simple and Intuitive Interface:** Interact with the Groq API using the `Groq` facade, simplifying access to chat, audio, and model functionalities.
8-
- **Robust Error Handling:** Efficiently handle communication errors and Groq API responses by capturing specific exceptions and providing informative messages.
9-
- **Flexible Configuration:** Define multiple Groq API instances, customize request timeouts, configure cache options, and adjust the package behavior to your needs.
10-
- **Detailed Practical Examples:** Explore code examples that demonstrate how to use the Groq Laravel package in real scenarios, including chatbots, audio transcription, and more.
11-
- **Comprehensive Testing:** Ensure the package's quality and reliability with a suite of tests covering integration, unit testing, and configuration aspects.
7+
- **Interface Simples e Intuitiva:** Interaja com a API Groq usando a facade `Groq`, simplificando o acesso às funcionalidades de chat, tradução e transcrição de áudio e chamadas à funções.
8+
- **Tratamento Robusto de Erros:** Gerencie eficientemente erros de comunicação e respostas da API Groq, capturando exceções específicas e fornecendo mensagens informativas.
9+
- **Configuração Flexível:** Defina várias instâncias da API Groq, personalize timeouts de requisição, configure opções de cache e ajuste o comportamento do pacote conforme suas necessidades.
10+
- **Exemplos Práticos Detalhados:** Explore exemplos de código que demonstram como usar o pacote Groq Laravel em cenários reais, incluindo chatbots, transcrição de áudio e muito mais.
11+
- **Testes Abrangentes:** Garanta a qualidade e confiabilidade do pacote com um conjunto de testes que cobrem aspectos de integração, testes unitários e configuração.
1212

13-
## Installation
13+
## Instalação
1414

15-
1. Install the package via Composer:
15+
1. Instale o pacote via Composer:
1616

17-
```bash
18-
composer require lucianotonet/groq-laravel
19-
```
17+
```bash
18+
composer require lucianotonet/groq-laravel
19+
```
2020

21-
2. Publish the configuration file:
21+
2. Publique o arquivo de configuração:
2222

23-
```bash
24-
php artisan vendor:publish --provider="LucianoTonet\GroqLaravel\GroqServiceProvider"
25-
```
23+
```bash
24+
php artisan vendor:publish --provider="LucianoTonet\GroqLaravel\GroqServiceProvider"
25+
```
2626

27-
3. Configure your Groq API credentials in the `.env` file:
27+
3. Configure suas credenciais da API Groq no arquivo `.env`:
2828

29-
```
30-
GROQ_API_KEY=your_api_key_here
31-
GROQ_API_BASE=https://api.groq.com/openai/v1
32-
```
29+
```
30+
GROQ_API_KEY=your_api_key_here
31+
GROQ_API_BASE=https://api.groq.com/openai/v1
32+
```
3333

34-
4. (Optional) Configure caching by defining the following environment variables in the `.env` file:
34+
4. (Opcional) Configure o cache definindo as seguintes variáveis de ambiente no arquivo `.env`:
3535

36-
```
37-
GROQ_CACHE_DRIVER=file
38-
GROQ_CACHE_TTL=3600
39-
```
36+
```
37+
GROQ_CACHE_DRIVER=file
38+
GROQ_CACHE_TTL=3600
39+
```
4040

41-
5. Import the `Groq` facade in your classes:
41+
5. Importe a facade `Groq` em suas classes:
4242

43-
```php
44-
use LucianoTonet\GroqLaravel\Facades\Groq;
45-
```
43+
```php
44+
use LucianoTonet\GroqLaravel\Facades\Groq;
45+
```
4646

47-
## Usage
47+
## Uso
4848

49-
Here's a simple example of creating a chat completion:
49+
Aqui está um exemplo simples de como criar uma conclusão de chat:
5050

5151
```php
52-
$response = Groq::chat()->completion()->create([
52+
$response = Groq::chat()->completions()->create([
5353
'model' => 'llama-3.1-8b-instant',
5454
'messages' => [
55-
['role' => 'user', 'content' => 'Hello, how are you?'],
55+
['role' => 'user', 'content' => 'Olá, como você está?'],
5656
],
5757
]);
5858
```
5959

60-
Refer to the [documentation](docs/index.md) for more detailed information on available methods, configuration options, and practical examples.
60+
## Tratamento de Erros
61+
62+
O pacote Groq Laravel facilita o tratamento de erros que podem ocorrer ao interagir com a API Groq. Use um bloco `try-catch` para capturar e gerenciar exceções:
63+
64+
```php
65+
try {
66+
$response = Groq::chat()->completions()->create([
67+
'model' => 'llama-3.1-8b-instant',
68+
// ...
69+
]);
70+
} catch (GroqException $e) {
71+
Log::error('Erro na API Groq: ' . $e->getMessage());
72+
abort(500, 'Erro ao processar sua solicitação.');
73+
}
74+
```
75+
76+
## Testes
77+
78+
Os testes são uma parte essencial do desenvolvimento de software de qualidade. O pacote Groq Laravel inclui uma suíte de testes que cobre integração, unidade e configuração. Para executar os testes, siga os passos abaixo:
79+
80+
1. **Instale as dependências do projeto:**
81+
82+
```bash
83+
composer install
84+
```
85+
86+
2. **Execute os testes:**
87+
88+
```bash
89+
vendor/bin/phpunit ./tests/Feature
90+
```
91+
92+
ou individualmente:
93+
94+
```bash
95+
vendor/bin/phpunit ./tests/Feature/FacadeTest.php
96+
```
6197

62-
## Contributing
98+
## Contribuindo
6399

64-
Contributions are welcome! Please follow the guidelines outlined in the [CONTRIBUTING.md](CONTRIBUTING.md) file.
100+
Contribuições são bem-vindas! Siga as diretrizes descritas no arquivo [CONTRIBUTING.md](CONTRIBUTING.md).
65101

66-
## License
102+
## Licença
67103

68-
This package is open-source software licensed under the [MIT license](LICENSE).
104+
Este pacote é um software de código aberto licenciado sob a [licença MIT](LICENSE).

docs/configuration.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: "Configuration"
3+
---
4+
5+
# Configuration
6+
7+
The Groq Laravel package offers various configuration options to customize its operation.
8+
9+
## Configuration File
10+
11+
After publishing the configuration file (`config/groq.php`), you can customize it:
12+
13+
```php
14+
return [
15+
'api_key' => env('GROQ_API_KEY'),
16+
'api_base' => env('GROQ_API_BASE', 'https://api.groq.com/openai/v1'),
17+
'timeout' => env('GROQ_TIMEOUT', 30), // Request timeout in seconds
18+
'instances' => [
19+
'default' => [
20+
'api_key' => env('GROQ_API_KEY'),
21+
'api_base' => env('GROQ_API_BASE', 'https://api.groq.com/openai/v1'),
22+
],
23+
// ... other instances
24+
],
25+
'cache' => [
26+
'driver' => env('GROQ_CACHE_DRIVER', 'file'),
27+
'ttl' => env('GROQ_CACHE_TTL', 3600),
28+
],
29+
];
30+
```
31+
32+
## Environment Variables
33+
34+
You can use environment variables in the `.env` file to configure the package:
35+
36+
* `GROQ_API_KEY`: Your Groq API key.
37+
* `GROQ_API_BASE`: Base URL of the Groq API.
38+
* `GROQ_TIMEOUT`: Timeout for API requests in seconds.
39+
* `GROQ_CACHE_DRIVER`: Cache driver (e.g., `file`, `redis`).
40+
* `GROQ_CACHE_TTL`: Cache time-to-live in seconds.
41+
42+
## Multiple Instances
43+
44+
To configure multiple instances of the Groq API, add new entries to the `instances` array in the `config/groq.php` file:
45+
46+
```php
47+
'instances' => [
48+
'default' => [
49+
'api_key' => env('GROQ_API_KEY'),
50+
'api_base' => env('GROQ_API_BASE'),
51+
],
52+
'custom' => [
53+
'api_key' => env('GROQ_CUSTOM_API_KEY'),
54+
'api_base' => env('GROQ_CUSTOM_API_BASE'),
55+
],
56+
],
57+
```
58+
59+
To use a specific instance, use the `instance()` method of the `Groq` facade:
60+
61+
```php
62+
$response = Groq::instance('custom')->chat()->completions()->create([
63+
// ...
64+
]);
65+
```
66+
67+
## Cache
68+
69+
The Groq Laravel package offers support for caching API responses. You can configure the driver and cache lifetime in the configuration file or via environment variables.

docs/error-handling.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: "Error Handling"
3+
---
4+
5+
# Error Handling
6+
7+
The Groq Laravel package facilitates error handling that may occur when interacting with the Groq API.
8+
9+
## Exceptions
10+
11+
All methods of the `Groq` facade can throw an `\Exception` in case of an error in communication with the API. This includes:
12+
13+
* Network errors (e.g., connection refused)
14+
* Authentication errors (e.g., invalid API key)
15+
* API response errors (e.g., unavailable model)
16+
17+
## Handling Errors
18+
19+
Use a `try-catch` block to capture and handle exceptions:
20+
21+
```php
22+
try {
23+
$response = Groq::chat()->completions()->create([
24+
// ...
25+
]);
26+
} catch (\Exception $e) {
27+
// Logic to handle the error.
28+
Log::error('Error in Groq API: ' . $e->getMessage());
29+
30+
// Return an error response to the user.
31+
abort(500, 'Error processing your request.');
32+
}
33+
```
34+
35+
## Detailed Error Messages
36+
37+
Analyze the error message returned by the exception (`$e->getMessage()`) to obtain more detailed information about the cause of the problem.
38+
39+
## Error Logging
40+
41+
Use Laravel's logging system to record errors and facilitate debugging:
42+
43+
```php
44+
Log::error('Error in Groq API:', [
45+
'exception' => $e,
46+
'request' => $request->all(),
47+
]);
48+
```
49+
50+
## Best Practices
51+
52+
* **Display user-friendly error messages to the end user**, avoiding exposing technical details of the exception.
53+
* **Implement fallback logic** to handle errors and ensure the continuity of your application.
54+
* **Monitor error logs** to quickly identify and resolve issues.

0 commit comments

Comments
 (0)