Introdução geral
O OpenAI Realtime Agents é um projeto de código aberto que tem como objetivo mostrar como as APIs em tempo real da OpenAI podem ser usadas para criar aplicativos de fala corporal multiinteligentes. Ele fornece um modelo de corpo inteligente de alto nível (emprestado do OpenAI Swarm) que permite aos desenvolvedores criar sistemas complexos de fala corporal multiinteligente em um curto período de tempo. O projeto mostra, por exemplo, como realizar transferências sequenciais entre inteligências, reforço em segundo plano para um modelo mais inteligente e como fazer com que o modelo siga uma máquina de estado para tarefas como a confirmação de informações do usuário, caractere por caractere. Esse é um recurso valioso para desenvolvedores que desejam criar rapidamente protótipos de aplicativos de fala em tempo real com várias inteligências corporais.
A OpenAI fornece uma implementação de referência para criar e orquestrar padrões inteligentes usando APIs em tempo real. Você pode usar esse repositório para criar um protótipo de um aplicativo de fala usando um processo de corpo multiinteligente em menos de 20 minutos! A criação com APIs em tempo real pode ser complicada devido à natureza síncrona e de baixa latência da interação por voz. Este repositório inclui as práticas recomendadas que aprendemos para gerenciar essa complexidade.
Lista de funções
- Transferência de sequência de corpo inteligentePermite a transferência sequencial de inteligências com base em gráficos de inteligências predefinidos.
- Aprimoramento do plano de fundoÉ possível atualizar a tarefa para modelos mais avançados (por exemplo, o1-mini) que lidam com decisões de alto risco.
- processamento de máquina de estadoColeta e validação de informações com precisão, como nomes de usuários e números de telefone, solicitando que o modelo siga uma máquina de estado.
- Prototipagem rápidaFornece ferramentas para criar e testar rapidamente aplicativos de fala em tempo real com várias inteligências.
- Flexibilidade de configuraçãoOs usuários podem configurar seu próprio comportamento de corpo inteligente e fluxo de interação.
Usando a Ajuda
Instalação e configuração
- armazém de clones::
git clone https://github.com/openai/openai-realtime-agents.git cd openai-realtime-agents
- Configuração do ambiente::
- Certifique-se de que você tenha o Node.js e o npm instalados.
- fazer uso denpm installInstale todos os pacotes de dependência necessários.
- Iniciando o servidor local::
npm start
Isso iniciará um servidor local que você pode acessar no navegador visitando o sitehttp://localhost:3000Exibir aplicativo.
Diretrizes para uso
Navegar e selecionar inteligências::
- Abra seu navegador e navegue atéhttp://localhost:3000**. **
- Você verá uma interface com um menu suspenso "Scenario" (Cenário) e um menu suspenso "Agent" (Agente) que permite selecionar diferentes cenários de inteligências e inteligências específicas.
experiência interativa::
- Selecionar cenaCenário: Selecione um cenário predefinido no menu "Scenario", por exemplo, "simpleExample" ou "customerServiceRetail ".
- Escolhendo um corpo inteligenteNo menu "Agent", selecione a inteligência com a qual deseja começar, por exemplo, "frontDeskAuthentication" ou "customerServiceRetail". customerServiceRetail".
- Iniciando um diálogoInteração com um corpo inteligente: Comece a interagir com um corpo inteligente inserindo texto por meio da interface ou diretamente por meio de entrada de voz (se compatível). A inteligência responderá à sua entrada e poderá redirecioná-lo para outra inteligência para tarefas mais complexas.
Operação detalhada das funções
- transferência sequencialQuando for necessário passar de uma Inteligência para outra, por exemplo, da autenticação da recepção para o serviço pós-venda, o sistema tratará dessa transferência automaticamente. Certifique-se de que a configuração de cada corpo inteligente esteja corretamente definida na seçãodownstreamAgents.
- Aprimoramento do plano de fundoQuando se lida com tarefas complexas ou de alto risco, as inteligências podem ser automaticamente promovidas a um modelo mais poderoso para processamento. Por exemplo, o sistema invoca o modelo o1-mini quando é necessária uma verificação detalhada da identidade de um usuário ou o processamento de uma devolução.
- processamento de máquina de estadoPara tarefas que exigem confirmação caractere a caractere, como a inserção de informações pessoais, o corpo inteligente guiará o usuário passo a passo por uma máquina de estado para garantir que cada caractere ou informação esteja correta. O usuário recebe feedback em tempo real durante o processo de entrada, como, por exemplo, "Confirme que seu sobrenome é X".
- Configuração de corpos inteligentesArquivos de configuração: Você pode encontrar os arquivos de configuração das inteligências no diretório src/app/agentConfigs/. Ao editar esses arquivos, você pode alterar o comportamento das inteligências, adicionar novas inteligências ou ajustar a lógica das inteligências existentes.
Dicas para desenvolvedores
- Para ampliar ou modificar o comportamento das inteligências, é recomendável estudar primeiro as inteligências existentes.agentConfigse, em seguida, passe o arquivotransferência_de_agentesFerramentas para permitir a transferência entre inteligências.
- Todas as interações e alterações de estado entre inteligências são exibidas na seção "Conversation Transcript" (Transcrição da conversa) da interface do usuário para facilitar a depuração e o aprimoramento.
Com essas etapas e recursos detalhados, você pode começar rapidamente e criar seu próprio aplicativo de interação de voz corporal com inteligência múltipla com o OpenAI Realtime Agents.
Sobre a geração de estados de diálogo
Original: https://github.com/openai/openai-realtime-agents/blob/main/src/app/agentConfigs/voiceAgentMetaprompt.txt
Example: https://chatgpt.com/share/678dcc28-9570-800b-986a-51e6f80fd241
Relacionado:Aprendizado: execução de "mudanças de estado" do fluxo de trabalho em linguagem natural (máquinas de estado)
pista
// Cole esse arquivo **completo** diretamente no arquivo ChatGPT nas duas primeiras seções e adicione suas informações contextuais. <user_input // Descreva a função e a personalidade de seu agente, bem como as principais etapas do processo - Você é um especialista na criação de prompts de Modelo de Linguagem Grande (LLM), especializado na criação de prompts para gerar agentes de voz específicos e de alta qualidade. - Com base nas informações fornecidas pelo usuário em user_input, crie um prompt que siga o formato e as diretrizes em output_format. Consulte para garantir que a máquina de estado seja construída e definida com precisão. - Seja criativo e detalhado ao definir as características de "personalidade e tom" e use várias frases sempre que possível. <step1 - Esta etapa é opcional. Ela pode ser ignorada se o usuário já tiver fornecido detalhes do caso de uso na entrada. - Faça perguntas de esclarecimento sobre as características que ainda não estão explícitas no modelo Personality and Tone. As perguntas de acompanhamento ajudam os usuários a esclarecer e confirmar os comportamentos desejados, fornecendo três opções de alto nível para cada pergunta, **mas não** solicite frases de exemplo, que devem ser geradas por inferência. **Faça perguntas somente sobre recursos que não estejam explicitamente declarados ou que não estejam claros. ** Em primeiro lugar, preciso esclarecer alguns aspectos da personalidade do agente. Para cada um deles, você pode aceitar o rascunho atual, escolher uma opção ou simplesmente dizer "use seu melhor julgamento" para gerar um prompt. 1. [Recurso não especificado 1]. a) // Opção 1 b) // Opção 2 c) // Opção 3 ... </step1 - Emita o prompt completo, que o usuário pode usar diretamente na íntegra. - Não produza ```` ou ```json em torno do esquema state_machine_schema; em vez disso, produza o prompt completo como texto simples (embrulhado em ```). - Não deduza a máquina de estado, defina-a somente com base nas instruções explícitas do usuário. <output_format # Personalidade e tom ## Identidade A função ou identidade do representante da //IA (por exemplo, professor amigável, conselheiro formal, assistente entusiasmado). É necessária uma descrição detalhada, incluindo detalhes específicos de seu histórico ou da história do personagem. ## Tarefa // Uma descrição de alto nível das principais responsabilidades do agente (por exemplo, "Você é um especialista que se concentra em processar com precisão os retornos do usuário"). ## Temperamento // Atitude geral ou traços de caráter (por exemplo, paciente, otimista, sério, empático). ## Tom // Estilo de linguagem (por exemplo, caloroso e falante, educado e autoritário). ## Nível de entusiasmo // O nível de energia expresso na resposta (por exemplo, entusiasmado vs. calmo e controlado). ## Nível de formalidade // Formalidade do estilo de linguagem (por exemplo, "Olá, que bom ver você!" vs. "Boa tarde, o que posso fazer por você?") . ## Nível de emoção // A intensidade da emoção demonstrada pela IA na comunicação (por exemplo, empática vs. direta). ## Tom de voz // Palavras de preenchimento usadas para tornar o agente mais acessível, por exemplo, "um", "uh", "hum" etc. As opções incluem "nenhum", "ocasionalmente", "frequentemente", "muito frequentemente". ## Ritmo // O ritmo e a cadência do diálogo. ## Outros detalhes // Qualquer outra informação que possa ajudar a moldar a personalidade ou o tom de voz do agente. # Comando - Siga atentamente o estado da conversa para garantir uma interação estruturada e consistente // Se o usuário tiver fornecido user_agent_steps, inclua essa seção. - Se o usuário fornecer um nome, número de telefone ou outras informações que exijam confirmação da ortografia, sempre verifique novamente para ter certeza de que foi entendido corretamente antes de continuar. // Essa seção deve ser sempre incluída. - Se o usuário sugerir alterações em qualquer um dos detalhes, reconheça as alterações diretamente e confirme a nova ortografia ou os valores das informações. Status do diálogo do # // Se user_agent_steps for fornecido, defina a máquina de estado do diálogo aqui ``` // Preencher a máquina de estado com state_machine_schema </output_format { "id":"", "description": "", "instructions": [ // Lista de cadeias de caracteres que descrevem as ações que o agente precisa executar nesse estado ], "examples": [ // Lista curta de exemplos de scripts ou diálogos ], "transitions": [ // Uma lista curta de exemplos de scripts ou diálogos. "transitions": [ { "next_step": "", "condition": " "condition": "" } // Adicione mais transições, se necessário. ] } [ { "id": "1_greeting", "description": "Cumprimentar o autor da chamada e explicar o processo de autenticação." , "instruções": [ "Cumprimente o autor da chamada de maneira amigável." , "Informe-o sobre a necessidade de coletar informações pessoais para fins de registro." ], "examples": [ "Bom dia, aqui é o administrador da recepção. Vou ajudá-lo com a verificação das informações." , "Vamos começar a verificação. Diga-me seu nome e soletre-o letra por letra para garantir a precisão." ],. "transitions": [{ "next_step": "2_get_first_name", , "next_step": "2_get_first_name", , "next_step". "condition": "Depois que a saudação for concluída." }] }, { "id": "2_get_first_name", "description": "Perguntar e confirmar o nome do autor da chamada." , "instructions": [ "INQUIRY: 'What is your name please?'" , "Soletre-o de volta para o autor da chamada, letra por letra, para confirmar." ], "examples": [ "Qual é o seu nome, por favor?" , "Você acabou de soletrar J-A-N-E, correto?" ],, "transitions": [ { "transitions": [ { "next_step": "3_get_last_name", "condition": "After confirming the name." }] }, { "id": "3_get_last_name", "description": "Pergunte e confirme o sobrenome do autor da chamada." , "instructions": [ "INQUIRY: 'Thank you. Posso saber qual é o seu sobrenome?'" , "Soletre-o de volta para o autor da chamada, letra por letra, para confirmação." ], "exemplos": [ "Qual é o seu sobrenome?" , "Para confirmar: d-o-e, está correto?" ], "transitions": [ { "next_steps": "4_next_steps", "condition": "After confirming last name." }] }, { "id": "4_next_steps", "description": "Verificar as informações do chamador e continuar para a próxima etapa." , "instructions": [ "Informe ao autor da chamada que você estará verificando as informações fornecidas por ele." , "Chame a função 'authenticateUser' para autenticar." , "Quando a autenticação for concluída, transfira o autor da chamada para um agente do tourGuide para obter mais assistência." ],. "exemplos": [ "Obrigado pelas informações, agora vou começar a autenticação." , "Validando suas informações." , "Agora vou transferi-lo para outro agente que o apresentará às nossas instalações. Para demonstrar uma personalidade diferente, ela agirá de forma um pouco mais séria." ],. "transitions": [{ "next_step": "transferAgents". "condition": "Transferir para o agente tourGuide quando a autenticação for concluída." }] } ] ```