OpenAI o1 Os modelos o1 pensam antes de responder e são capazes de gerar longas cadeias internas de pensamento antes de responder ao usuário. Os modelos o1 se destacam em raciocínio científico, classificando-se no 89º percentil em Problemas de Programação Competitiva (Codeforces), ficando entre os 500 melhores alunos dos EUA nas eliminatórias da American Mathematical Olympiad (AIME), classificando-se entre os 500 melhores alunos dos Estados Unidos e excedendo a precisão de um PhD humano em testes de referência (GPQA) para problemas de física, biologia e química. classificou-se entre os 500 melhores alunos dos Estados Unidos e excedeu a precisão de nível de doutorado humano em testes de referência (GPQA) para problemas de física, biologia e química. Os modelos o1 também demonstraram um alto nível de raciocínio científico.
Dois modelos de inferência são fornecidos na API:
1. o1-preview
Uma prévia do nosso modelo o1, projetado para raciocinar sobre problemas difíceis usando uma ampla gama de conhecimentos comuns sobre o mundo.
2. o1-mini
O1: uma versão mais rápida e mais barata do o1 que é particularmente bom em tarefas de codificação, matemática e ciências, sem exigir amplo conhecimento geral.
O modelo o1 fornece uma inferência significativa na fazer progressosMas eles Não se destina a substituir o GPT-4o em todos os casos de uso.
Para aplicativos que exigem entradas de imagens, chamadas de função ou tempos de resposta consistentemente rápidos, os modelos GPT-4o e GPT-4o mini ainda são a escolha certa. No entanto, se estiver procurando desenvolver aplicativos que exijam inferência profunda e possam acomodar tempos de resposta mais longos, o modelo o1 pode ser uma excelente opção. Estamos ansiosos para ver o que você criará com eles!
🧪 o1 Os modelos estão atualmente em fase de teste
o1 O modelo está atualmente em fase de testescom funcionalidade limitada. O acesso é limitado a Nível 5 Os desenvolvedores do Aqui estão Verifique seu nível de uso e tenha um limite de tarifa baixo. Estamos trabalhando para adicionar mais recursos, adicionando limite de velocidadee expandindo o acesso a mais desenvolvedores nas próximas semanas!
Início rápido
o1-preview
responder cantando o1-mini
Todos podem ser acessados por meio do conclusões de bate-papo Uso do endpoint.
from openai import OpenAI cliente = OpenAI() resposta = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "Escreva um script Bash que formate a matriz '[1,2], "content": "Escreva um script do Bash que represente uma matriz como uma cadeia de caracteres no formato '[1,2],[3,4],[5,6]' e imprima a matriz transposta no mesmo formato." } ] ) print(response.choices[0].message.content)
Dependendo da quantidade de raciocínio exigida pelo modelo para resolver o problema, essas solicitações podem levar de alguns segundos a alguns minutos.
Restrições Beta
Na versão Beta, muitos dos parâmetros da API de conclusão de bate-papo ainda não estão disponíveis. Os mais notáveis são:
- modal (computação, linguística): Somente texto é suportado, não imagens.
- Tipo de mensagemMensagens do usuário: Somente mensagens do usuário e mensagens do assistente são suportadas, não mensagens do sistema.
- transmissãoNão suportado.
- artefatoFerramentas, chamadas de função e parâmetros de formato de resposta não são suportados.
- Problemas de registroNão suportado.
- O resto:: `
temperatura
`, `top_p
` e `n
` Fixo para `1
`, e `presence_penalty
` e `penalidade_frequência
` Fixo para `0
`. - Assistentes e loteEsses modelos não são compatíveis com a API de assistentes ou a API de lotes.
À medida que sairmos da versão Beta, o suporte a alguns desses parâmetros será adicionado. o1 Os modelos futuros da série incluirão recursos como multimodalidade e uso de ferramentas.
Como funciona o raciocínio
O modelo o1 apresenta Tokens de raciocínio. Esses modelos usam inferência tokens O modelo "pensa", analisa a compreensão da dica e considera várias maneiras de gerar uma resposta. Depois de gerar tokens de raciocínio, o modelo gera respostas como tokens de conclusão visíveis e descarta os tokens de raciocínio de seu contexto.
Abaixo está um exemplo de um diálogo de várias etapas entre um usuário e um assistente. Os tokens de entrada e saída de cada etapa são mantidos, enquanto os tokens de inferência são descartados.
Embora os tokens de inferência não possam ser exibidos por meio da API, eles ainda ocupam o espaço da janela de contexto do modelo e são usados como o tokens de saída Encargos.
Janela Gerenciar contexto
Os modelos o1-preview e o1-mini fornecem uma janela de contexto de 128.000 tokens. Cada vez que o conteúdo é gerado, há um limite superior no número máximo de tokens de saída - isso inclui tokens de inferência invisíveis e tokens de geração visíveis:
- o1-preview: até 32.768 tokens
- o1-mini: até 65.536 tokens
Ao gerar conteúdo, é importante garantir que haja espaço suficiente para tokens de inferência na janela de contexto. Dependendo da complexidade do problema, o modelo pode gerar de algumas centenas a dezenas de milhares de tokens de inferência, e o número exato de tokens de inferência usados pode ser encontrado na seção Objeto de uso para objeto de resposta de geração de bate-papo acertou em cheio completion_tokens_details
Ver:
uso: { total_tokens: 1000, prompt_tokens: 400, completion_tokens: 600, completion_tokens_details: { reasoning_tokens: 500 } }
Controle de custos
Para gerenciar o custo da família de modelos o1, você pode usar a opção max_completion_tokens
limita o número total de tokens gerados pelo modelo (tokens de inferência e geração).
No modelo anterior, `max_tokens
O parâmetro ` controla o número de tokens gerados e o número de tokens visíveis para o usuário, que são sempre iguais. Entretanto, na família o1, o número total de tokens gerados pode exceder o número de tokens visíveis devido à presença de tokens de raciocínio interno.
Como alguns aplicativos podem depender de `max_tokens
Consistente com o número de tokens recebidos da API, a série o1 introduz `max_completion_tokens
` para controlar explicitamente o número total de tokens gerados pelo modelo, tanto os tokens inferidos quanto os gerados visíveis. Essa escolha explícita garante que os aplicativos existentes não sejam interrompidos quando novos modelos forem usados. Para todos os modelos anteriores, `max_tokens
O parâmetro ` ainda mantém sua função original.
Permitir espaço para raciocínio
Se os tokens gerados atingirem o limite da janela de contexto ou se você definir o parâmetro `max_completion_tokens
`, você receberá `finish_reason
` Definir como `comprimento
` é a resposta de geração do chat. Isso pode ocorrer antes que qualquer token visível seja gerado, o que significa que você pode pagar por tokens de entrada e raciocínio e não receber uma resposta visível.
Para evitar isso, certifique-se de deixar espaço suficiente na janela de contexto ou defina a opção `max_completion_tokens
O valor ` é ajustado para um número maior. A OpenAI recomenda reservar pelo menos 25.000 tokens para inferência e saída quando você começar a usar esses modelos. Quando estiver familiarizado com o número de tokens de inferência necessários para dicas, você poderá ajustar esse buffer de acordo.
Sugestões de palavras-chave
Esses modelos têm melhor desempenho quando usam dicas claras e concisas. Algumas técnicas de engenharia de dicas (como dicas de poucos disparos ou deixar o modelo "pensar passo a passo") podem não melhorar o desempenho e, às vezes, podem ser contraproducentes. Aqui estão algumas práticas recomendadas:
- Mantenha os avisos simples e claros: Esses modelos são bons em compreender e responder a instruções curtas e claras sem precisar de muita orientação.
- Evite pistas de pensamento em cadeia: Como esses modelos raciocinam internamente, não é necessário orientá-los a "pensar passo a passo" ou "explicar seu raciocínio".
- Use separadores para melhorar a clareza: O uso de separadores como aspas triplas, tags XML ou títulos de seção para rotular claramente as diferentes partes da entrada ajuda o modelo a entender cada parte corretamente.
- Na busca por uma geração aprimorada (RAG) em Contexto adicional do limite:** Ao fornecer contexto ou documentação adicional, inclua somente as informações mais relevantes para evitar complicar demais as respostas do modelo.
Exemplos de prompts
Codificação (refatoração)
A família de modelos OpenAI o1 é capaz de implementar algoritmos complexos e gerar código. As dicas a seguir exigem que o o1 refatore um Reagir Componente.
from openai import OpenAI cliente = OpenAI() prompt = """ Diretriz: - Modifique o componente React abaixo para tornar o texto de livros de não ficção vermelho. - Retorne somente o código na resposta e não inclua nenhuma formatação adicional, como blocos de código markdown. - Para a formatação, use recuo de quatro espaços e não mais do que 80 linhas de código. const books = [ { title: 'Dune', category: 'fiction', id: 1 }, ]. export default function BookList() { const listItems = books.map(book =>
- {listItems}
Código (planejamento)
A família de modelos o1 da OpenAI também é adepta da criação de planos de várias etapas. Esse prompt de exemplo solicita que o o1 crie a estrutura do sistema de arquivos de uma solução completa e forneça o código Python para implementar os casos de uso necessários.
from openai import OpenAI cliente = OpenAI() prompt = """ Quero criar um aplicativo Python que receba uma pergunta do usuário e procure a resposta correspondente em um banco de dados. Se for encontrada uma correspondência próxima, retorne a resposta correspondente. Se nenhuma correspondência for encontrada, peça uma resposta ao usuário e armazene o par pergunta/resposta no banco de dados. Crie um plano para uma estrutura de diretório para essa finalidade e, em seguida, retorne o conteúdo completo de cada arquivo. Forneça seu raciocínio somente no início e no final do código, não no meio dele. """ response = client.chat.completions.create( model="o1-preview", messages=[ { "função": "usuário", "conteúdo": [ "content": [ { "type": "text", "text": prompt "text": prompt }, } }, [ "content": [ "type": "text", "text": prompt } ] ) print(response.choices[0].message.content)
Pesquisa STEM
A família de modelos OpenAI o1 tem bom desempenho em pesquisas STEM. Os prompts usados para dar suporte a tarefas básicas de pesquisa geralmente apresentam bons resultados.
from openai import OpenAI cliente = OpenAI() prompt = """ Quais são os três compostos que devemos considerar estudar para avançar na pesquisa de novos antibióticos? Por que deveríamos considerá-los? """ resposta = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": prompt "content": prompt } ] ) print(response.choices[0].message.content)
exemplo de caso de uso
Alguns exemplos de casos de uso do mundo real usando o1 podem ser encontrados no o livro de receitas Encontrado em.