Integração com Phi-3-Mini-128K via API REST usando curl para Chamadas Programáticas

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.

Tags: Phi-3-Mini-128K cURL API REST Streamlit Pytorch

Publicado em 7-16 11:19