fundo
A OpenAI lançou oficialmente uma grande atualização no nível da API em 2023.06.13. As principais mudanças são as seguintes:
- A API de conclusões de bate-papo oferece suporte a chamadas de função definidas pelo desenvolvedor.
- Atualizado
gpt-4
egpt-3.5-turbo
modelos. gpt-3.5-turbo
O comprimento do contexto suportado é expandido para 16K, e apenas tokens de 4K eram suportados antes.- O custo de usar o modelo de incorporação é reduzido em 75%.
gpt-3.5-turbo
O custo do token de entrada do modelo é reduzido em 25%, do token original de US$ 0,002/1K para o token de US$ 0,0015/1K.- 2023.09.13 estará offline
gpt-3.5-turbo-0301
,gpt-4-0314
egpt-4-32k-0314
os modelos, após esse ponto no tempo, chamar esses modelos falhará na solicitação.
Os modelos mencionados acima seguem rigorosamente as normas de privacidade e segurança divulgadas em 1º de março de 2023. Os dados enviados pelos usuários por meio da API e os dados retornados pela API não serão utilizados para o treinamento de modelos grandes da OpenAI.
exemplo de chamada de função
Cenário: Queremos que o ChatGPT informe as condições climáticas atuais em Boston.
Esta função não pode ser realizada contando apenas com o ChatGPT, porque os dados de treinamento do ChatGPT são apenas até setembro de 2021 e o clima atual não pode ser conhecido. Este é também o maior problema do GPT no momento, e não pode suportar bem a atualização oportuna de informações.
Então, como o ChatGPT deve ser usado para atingir essa função?
Podemos definir uma função por nós mesmos para obter as condições meteorológicas de uma determinada cidade naquele dia. O ChatGPT só precisa gerar o valor do parâmetro (também chamado de parâmetro real) de nossa função personalizada de acordo com a pergunta do usuário, então podemos chamar o função personalizada para obter o resultado desejado e, em seguida, enviar o resultado gerado pela função personalizada e o registro de diálogo como um prompt para o ChatGPT, e o ChatGPT fará um resumo e, finalmente, retornará a conclusão do resumo ao usuário.
O usuário faz uma pergunta -> ChatGPT gera os parâmetros reais da função -> o desenvolvedor chama a função personalizada -> envia o resultado da execução da função + registro de diálogo de contexto para ChatGPT para resumo -> retorna a conclusão do resumo para o usuário
Vejamos um caso específico de implementação:
- Primeiro Passo: Faça Perguntas
What’s the weather like in Boston right now?
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "What is the weather like in Boston?"}
],
"functions": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
Obtenha o resultado retornado por ChatGPT. No resultado retornado, o conteúdo é nulo e function_call tem um valor, o que significa que a função personalizada precisa ser chamada get_current_weather
e o valor do parâmetro da função personalizada é retornado.
{
"id": "chatcmpl-123",
...
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"function_call": {
"name": "get_current_weather",
"arguments": "{ \"location\": \"Boston, MA\"}"
}
},
"finish_reason": "function_call"
}]
}
- Etapa 2: chame a função personalizada.
curl https://weatherapi.com/...
Obtenha a função personalizada para retornar o resultado
{
"temperature": 22, "unit": "celsius", "description": "Sunny" }
- Etapa 3: envie os resultados da execução da função personalizada e os registros de diálogo de contexto para o ChatGPT para resumo.
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "What is the weather like in Boston?"},
{"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston, MA\"}"}},
{"role": "function", "name": "get_current_weather", "content": "{\"temperature\": "22", \"unit\": \"celsius\", \"description\": \"Sunny\"}"}
],
"functions": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
Por fim, o ChatGPT retorna os seguintes resultados:
{
"id": "chatcmpl-123",
...
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "The weather in Boston is currently sunny with a temperature of 22 degrees Celsius.",
},
"finish_reason": "stop"
}]
}
Exigimos o resultado:
The weather in Boston is currently sunny with a temperature of 22 degrees Celsius.
O elemento central da realização das funções acima é que o ChatGPT pode julgar de forma inteligente quando chamar a função personalizada do desenvolvedor de acordo com a entrada do usuário e retornar o valor do parâmetro da função personalizada. O desenvolvedor pode chamar diretamente a função personalizada para obter o resultado desejado e, finalmente, enviar o registro de diálogo e o resultado da execução da função personalizada para o modelo grande para resumo.
Atualmente esta função pode ser utilizada nestes gpt-4-0613
dois gpt-3.5-turbo-0613
modelos.
Depois que o OpenAI concluir a atualização do modelo em 2023.06.27, os modelos gpt-4
, gpt-4-32k
e gpt-3.5-turbo
também poderão usar esta função.
Para obter detalhes sobre o uso da nova API, consulte: documentação do desenvolvedor .
novo modelo
modelo GPT-4
gpt-4-0613
Em contraste gpt-4
, o suporte para chamadas de função foi adicionado.
gpt-4-32k-0613
Em contraste gpt-4-32k
, o suporte para chamadas de função também é adicionado.
Nas próximas semanas, a OpenAI fará o possível para aprovar os aplicativos na lista de espera da API GPT-4, para que os desenvolvedores possam aproveitar os poderosos recursos do GPT-4. Se ainda não aplicou, candidate-se agora.
Modelo GPT-3.5 Turbo
gpt-3.5-turbo-0613
Em contraste gpt-3.5-turbo
, o suporte para chamadas de função foi adicionado.
gpt-3.5-turbo-16k
O comprimento do contexto suportado foi expandido para 16K, que é gpt-3.5-turbo
4 vezes o custo e gpt-3.5-turbo
2 vezes o custo. A taxa específica é de US$ 0,003 por token de entrada de 1K e US$ 0,004 por token de saída de 1K.
Tempo off-line do modelo antigo
A partir de 13.06.2023, a OpenAI começará a atualizar o ambiente de produção gpt-4
e os modelos para a versão mais recente. Espera-se que o modelo atualizado esteja disponível a partir de 27.06.2023.gpt-4-32k
gpt-3.5-turbo
Se o desenvolvedor não quiser atualizar, ele pode continuar usando a versão antiga do modelo, mas precisa ser especificado no parâmetro do modelo
gpt-3.5-turbo-0301
ou .gpt-4-0314
gpt-4-32k-0314
Essas versões antigas dos modelos estarão offline em 13/09/2023 e as chamadas subsequentes falharão.
Menor preço
Modelo de incorporação
text-embedding-ada-002
Atualmente, é o mais popular de todos os modelos de incorporação no OpenAI.
Agora, o custo de usar esse modelo de incorporação foi reduzido para $ 0,0001/1K de token e o custo foi reduzido em 75%.
Modelo GPT-3.5 Turbo
gpt-3.5-turbo
Quando o modelo cobra, ele não cobra apenas pelas perguntas enviadas pelo usuário (token de entrada), mas também pelos resultados retornados pela API (token de saída).
Agora, o custo do token de entrada do modelo foi reduzido em 25% e o custo por token de entrada de 1K é de US$ 0,0015.
A taxa para o token de saída permanece inalterada em $ 0,002/1K token.
gpt-3.5-turbo-16k
A taxa do token de entrada do modelo é de 0,003 USD/1K de token e a taxa do token de saída é de 0,004 USD/1K de token.
Resumir
Artigos e códigos de amostra são de código aberto no GitHub: GPT Practical Tutorial , onde você pode ver todos os LLMs de código aberto convencionais.
Conta oficial: codificação avançada. Siga a conta oficial para obter o conteúdo de combate GPT mais recente.
Site pessoal: Blog de Jincheng .
Zhihu: Wuji .
Referências
- https://openai.com/blog/function-calling-and-other-api-updates