O Phi-3-Mini-128K é uma ferramenta de conversação leve baseada no modelo Phi-3-mini-128k-instruct da Microsoft, otimizada para implantação local e inferência eficiente. Este guia foca em como interagir programaticamente com o serviço API do modelo utilizando o comando curl, permitindo integração em sisetmas automatizados.
Características Principais do Modelo
O modelo utiliza precisão bfloat16 (torch.bfloat16) para reduzir o uso de memória GPU para aproximadamente 7-8GB, com alocação automática de recursos via device_map="auto". Ele suporta uma janela de contexto de 128K tokens, adequada para tarefas complexas como análise de código longo ou documentos extensos. O processamento de diálogos é gerenciado pelo pipeline do transformers, simplificando a formatação das interações.
Configuração do Serviço API
Antes de realizar chamadas, garanta que o serviço API está ativo. Geralmente, o servidor é iniciado com um script Python, expondo um endpoint REST na porta 8000 por padrão. Verifique o status do serviço com:
netstat -tulnp | grep 8000
Se necessário, inicie o serviço com um comando como:
python iniciar_servidor.py --porta 8000
Para alterar a porta, ajuste o parâmetro --porta conforme necessário.
Exemplos de Chamadas com curl
Requisição Básica
Para enviar uma mensagem única ao modelo, use uma solciitação POST com payload JSON:
curl -X POST \
http://localhost:8000/v1/chat \
-H "Content-Type: application/json" \
-d '{
"historico": [
{"papel": "usuario", "mensagem": "Olá, apresente-se"}
]
}'
Neste exemplo, o endpoint foi alterado para "/v1/chat", e os campos do payload foram renomeados para "historico" com subcampos "papel" e "mensagem", mantendo a mesma funcionalidade.
Diálogo Multi-turno
Para manter o contexto de conversas anteriores, inclua múltiplas entradas no array "historico":
curl -X POST \
http://localhost:8000/v1/chat \
-H "Content-Type: application/json" \
-d '{
"historico": [
{"papel": "usuario", "mensagem": "Como implementar ordenação rápida em Python?"},
{"papel": "assistente", "mensagem": "A ordenação rápida pode ser feita usando o algoritmo quicksort..."},
{"papel": "usuario", "mensagem": "Explique a função de particionamento"}
]
}'
Parâmetros Avançados
Respostas em Streaming
Ative o modo de streaming adicionando a chave "fluxo" no payload para receber respostas gradualmente:
curl -X POST \
http://localhost:8000/v1/chat \
-H "Content-Type: application/json" \
-d '{
"historico": [
{"papel": "usuario", "mensagem": "Descreva o funcionamento de redes neurais"}
],
"fluxo": true
}'
Ajuste de Aleatoriedade
Controle a criatividade das respostas com o parâmetro "temperatura". Valores mais altos aumentam a variabilidade:
curl -X POST \
http://localhost:8000/v1/chat \
-H "Content-Type: application/json" \
-d '{
"historico": [
{"papel": "usuario", "mensagem": "Escreva um poema sobre o verão"}
],
"temperatura": 0.8
}'
Limitação de Tokens
Use "max_tokens" para restringir o comprimento da resposta:
curl -X POST \
http://localhost:8000/v1/chat \
-H "Content-Type: application/json" \
-d '{
"historico": [
{"papel": "usuario", "mensagem": "Resuma os tipos de aprendizado de máquina"}
],
"max_tokens": 250
}'
Solução de Problemas Comuns
Se ocorrer erros de conexão, confirme que o serviço está rodando e que a porta está acessível. Para melhorar o desempenho, reduza "max_tokens", simplifique os prompts ou otimise os recursos do servidor. Ajustes na configuração do modelo, como o uso de bfloat16, podem ajudar a equilibrar precisão e velocidade.