esta demonstração é baseada no site Learn Microsoft
Algum outro notebook Jupyter estará disponível no repositório para mostrar como usar assistentes de uma forma mais complexa.
Esta demonstração usará python, biblioteca openAi e azure para criar um assistente para usá-lo em um notebook jupyter.
Se você quiser testar diretamente no Azure Ai Studio está aqui Azure OpenAi Studio
Documentação para o estúdio Azure Ai
Um assistente (ou muitos que possam trabalhar juntos!) pode realizar uma ampla gama de tarefas, como responder perguntas, fornecer recomendações e executar comandos com a ajuda de ferramentas.
Um assistente pode ter algumas ferramentas:
Você pode usar assistentes para criar uma ampla variedade de aplicativos, como chatbots, agentes virtuais e muito mais.
Claramente você poderia criar em poucas linhas de código algum assistente com ferramenta(s) para criar um pipeline de threads a fim de atender a uma solicitação ou demanda do usuário. o atendente levará a ferramenta correta para a demanda de acordo com a solicitação do usuário.
na mesma ideia você poderia usar modelos diferentes por assistente para ter uma melhor resposta ou para limitar o custo do assistente
Você pode criar vários assistentes com ferramentas diferentes em um thread (assíncrono ou não) para resolver um problema ou dar uma resposta a um usuário, você também pode ter threads diferentes com assistentes diferentes
Execuções de thread multiassistente com chamadas de função paralelas
No final com esta biblioteca você recuperará a resposta no formato json, formato fácil de usar em python e de fazer algum processo nele.
para criar uma orquestração do assistente você terá que gerenciar estes:
A primeira demonstração na raiz do repositório é um assistente simples baseado na documentação da Microsoft.
AoaiAssistant.ipynb
Cenário de nome | Descrição caderno | Link |
---|---|---|
Assistente de resolução matemática | 1 assistente com apenas intérprete de código como ferramenta | AoaiAssistant.ipynb |
você precisará se quiser testar o notebook localmente:
python 3.8 ou posterior
código e plug-ins do visual studio:
Uma assinatura do Azure – 200 $ para a primeira assinatura
Acesso ao serviço Azure OpenAi Solicite acesso para AOAI
Acesso ao modelo lastet gpt4 0125 (na verdade disponível na Suécia Central, Oeste dos EUA, Japão Leste)
Outros modelos são compatíveis com o recurso de agentes
Implante o serviço no portal azure para o serviço Azure open Ai na região de acordo
Faça uma implantação do modelo no serviço azure openAi Ai studio, dê um nome de implantação
ou
Codespace para usar o notebook na nuvem com Github
Para o nome da implantação do modelo (você normalmente forneceu um nome que pode ser diferente do nome do modelo quando você o implantou) no Azure Ai Studio, você pode encontrá-lo na seção de implantação do modelo, se não o fizer. não lembrá-lo
Você deve modificar corretamente as informações em secrets_env renomeadas em secrets.env
o endpoint do Azure e a chave do Azure para o serviço Open Ai podem ser encontrados em seu portal/assinatura do Azure ou diretamente na categoria conversa no Ai Studio, com o modelo selecionado e o código do botão clicado na primeira etapa E depois você terá que clicar no botão "mostrar segredo" para obter a chave e o endpoint é exibido no código de exemplo
Você terá que clicar em cada etapa do código pelo botão play à esquerda de cada célula
se não houver erros você obterá na última célula esse dump json com o resultado e todas as informações coletadas
Quando estiver pronto, você pode seguir as etapas no notebook AzureAOAI.ipynb
No meu caso, meu modelo de implantação para gpt4-1106 é denominado gpt-4turbo
Agora você poderia usar o notebook python no código do visual studio (ou dentro de um navegador com codespace) se quiser fazer algum processo no resultado ou alguma orquestração com o resultado do assistente:
Você criou um assistente? Você quer entender como gerenciar threads e mensagens?
Primeiro de tudo dê uma olhada nas documentações para entender e comece com assistentes
Respeita um fluxo específico para criar um thread e gerenciar mensagens em um thread.
diagrama de sequência
participante A como assistente de criação
participante B como criação de thread
participante C como criação de mensagem do usuário
participante D como execução de thread
participante E como recuperação de status de execução
participante F como loop de verificação de status
participante G como recuperação de mensagens
A->>B: Criar Assistente com Modelo
B->>C: Criar Tópico
C->>D: Adicionar mensagem do usuário ao tópico
D->>E: Executar Thread
E->>F: Recuperar status de execução
F->>F: Loop até que o status seja final
F-->>G: Status: concluído
Nota à direita de G: buscar e exibir mensagens
F-->>A: Status: cancelado
F-->>A: Status: expirado
F-->>A: Status: falhou
{
"data" : [
{
"id" : " msg_5Oc2nmN7boHKfYuJaOnxkYrQ " ,
"assistant_id" : " asst_vid43QSBUFAVr7f7nraAwfkS " , // the id of the assistant
"content" : [
{
"text" : {
"annotations" : [],
"value" : " The solution to the equation \ (3x + 11 = 14 \ ) is \ (x = 1 \ ). " // the result of the assistant
},
"type" : " text "
}
],
"created_at" : 1706827368 ,
"file_ids" : [],
"metadata" : {},
"object" : " thread.message " ,
"role" : " assistant " ,
"run_id" : " run_VlCTYceNmV8HlQyOLQUe7Xj6 " ,
"thread_id" : " thread_KM402gTevvYxlfxYA1ONQPHP "
},
{
"id" : " msg_ZHWVk1gJT292L4YJzlbLjmFq " ,
"assistant_id" : null ,
"content" : [
{
"text" : {
"annotations" : [],
"value" : " I need to solve the equation `3x + 11 = 14`. Can you help me? " // the rquest of the user
},
"type" : " text "
}
],
"created_at" : 1706827327 ,
"file_ids" : [],
"metadata" : {},
"object" : " thread.message " ,
"role" : " user " ,
"run_id" : null ,
"thread_id" : " thread_KM402gTevvYxlfxYA1ONQPHP " // id of the thread
}
],
"object" : " list " ,
"first_id" : " msg_5Oc2nmN7boHKfYuJaOnxkYrQ " , // the id of the first message - request user
"last_id" : " msg_ZHWVk1gJT292L4YJzlbLjmFq " , // Last message of the thread
"has_more" : false
}
As ferramentas de interpretação de código são convertidas em código python. Neste caso de uso, se você deseja verificar a solução do assistente para problemas matemáticos com uma biblioteca dedicada como sympy ou numpy
Essas informações são extraídas da biblioteca openAi em python biblioteca python openai
code_interpreter
, retrieval
ou function
.