Closed rrg92 closed 2 weeks ago
Resumo: Encerramento da resposta com stream=True é diferente. String [DONE] não é incluída.
O seguinte exemplo foi feito no postman, usando esses parâmetros:
{
"messages": [
{"role": "user", "content": "Oi, tudo bem?"}
]
,"model": "gpt-4o-mini"
,"max_tokens": 200
,"temperature": 0.5
,"stream": true
}
Resultado:
Ao usar o stream, a API da OpenAI devolve um série de eventos (via SSE), o último evento é um string [DONE].
{
"messages": [
{"role": "user", "content": "Oi, tudo bem?"}
]
,"model": "sabia-3"
,"max_tokens": 200
,"temperature": 0.5
,"stream": true
}
Na API da Maritaca, não há o retorno do [DONE]
Além disso, há algumas pequenas diferenças no JSON resultante:
Result open ai:
{
"id": "chatcmpl-9vRooMjSHkd6VQSjIUlJJMBtseAgv",
"object": "chat.completion.chunk",
"created": 1723478658,
"model": "gpt-4o-mini-2024-07-18",
"system_fingerprint": "fp_48196bc67a",
"choices": [
{
"index": 0,
"delta": {
"content": "?"
},
"logprobs": null,
"finish_reason": null
}
]
}
Result Maritaca:
{
"id": "450a4ba9-b9aa-4f14-a67f-564ea3d9a8dd",
"object": "chat.completion.chunk",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": " hoje?"
},
"logprobs": null,
"finish_reason": "stop"
}
],
"created": 1723478700,
"model": "sabia-3",
"service_tier": null,
"system_fingerprint": "40d846e3cba8f8b8",
"usage": null
}
Creio que esta diferenças no JSON retornado não sejam tão críticas, quanto ao uso do [DONE], pois parece que a Maritaca retorna mais campos que a OpenAI, então, creio que isso não seria um problema considerável, visto que o resto permanece igual.
O maior potencial que vejo ai seria o [DONE], que pode ser usado em alguma implementação para encerrar a comunicação SSE.
Resumo: stream_options.include_usage não suportado
A API da OpenAI permite especificar o include_usage, que faz com que uma última mensagem contendo informaçoes de consumo seja gerada:
A API não suporta a opção e eu também, nas respostas retornadas, não encontrei nenhum campo que viessa essa informação. Acredito que ela pode ser útil em diversas implementações que usem o stream
oi @rrg92. Obrigado por levantar essas questões. Ambos os pontos que você levantou ja devem estar corrigidos. Caso você encontre alguma outra incompatibilidade ou problema so avisar.
Fechando essa issue, mas é só reabrir caso descubra alguma outra. Obrigado!
Olá pessoal. Conforme sugerido na issue #88, identifiquei algumas coisas que ainda não são 100% compatíveis com a OpenAI, enquanto estava fazendo alguns testes.
A ideia dessa issue é:
Obs: entendo que muitas dessas incompatibilidades poderiam ser corrigidas do lado client. Mas, a ideia de listar aqui é apenas para manter um local central fácil de encontrar, para que quem for usar decida se vai esperar uma correção da Maritaca (se acharem que deve ser feito) ou se vai seguir tentando contornar mesmo. Isso ajuda a poupar tempo na hora de debugar algum problema.
Para facilitar encontrar os comentários que documentam essas incompatibilidades, sugiro colocar uma hashtag #incopenai, e deixar um comentário para cada situação encontrada.