Criar um chatbot básico de IA
O modelo de chatbot de IA apresenta uma aplicação de bot, semelhante à ChatGPT, que responde a perguntas dos utilizadores e permite que os utilizadores interajam com o bot de IA no Microsoft Teams. A biblioteca de IA do Teams é utilizada para criar o modelo de aplicação, fornecendo as capacidades para criar aplicações do Teams baseadas em IA.
Pré-requisitos
Instalar | Para usar... |
---|---|
Visual Studio Code | Ambientes de compilação JavaScript, TypeScript ou Python. Utilize a versão mais recente. |
Kit de ferramentas do Teams | O Microsoft Visual Studio Code extensão que cria um projeto estruturado para a sua aplicação. Utilize a versão mais recente. |
Node.js | Ambiente de runtime do JavaScript de back-end. Para obter mais informações, veja Node.js tabela de compatibilidade de versões para o tipo de projeto. |
Microsoft Teams | Microsoft Teams para colaborar com todas as pessoas com quem trabalha através de aplicações para chat, reuniões e chamadas num único local. |
Azure OpenAI | Primeiro, crie a chave da API OpenAI para utilizar o Transformador Pré-preparado Gerador (GPT) da OpenAI. Se quiser alojar a sua aplicação ou aceder a recursos no Azure, tem de criar um serviço Azure OpenAI. |
Criar um novo projeto de chatbot de IA básico
Abra o Visual Studio Code.
Selecione o ícone do Toolkit
do Teams na Barra de Atividade do Visual Studio Code
Selecione Criar uma Nova Aplicação.
Selecione Agente do Motor Personalizado.
Selecione Chatbot básico de IA.
Selecione JavaScript.
Selecione Azure OpenAI.
Introduza as suas credenciais OpenAI ou Azure OpenAI com base no serviço que selecionar. Selecione Enter.
Selecione Pasta predefinida.
Para alterar a localização predefinida, siga estes passos:
- Selecione Procurar.
- Selecione a localização da área de trabalho do projeto.
- Selecione Selecionar Pasta.
Introduza um nome de aplicação para a sua aplicação e, em seguida, selecione a tecla Enter .
Criou com êxito a área de trabalho do projeto do chatbot de IA.
Em EXPLORADOR, aceda ao ficheiro env.env.testtool.user>.
Atualize os seguintes detalhes:
SECRET_AZURE_OPENAI_API_KEY=<your-key>
AZURE_OPENAI_ENDPOINT=<your-endpoint>
AZURE_OPENAI_DEPLOYMENT_NAME=<your-deployment>
Para depurar a sua aplicação, selecione a tecla F5 ou no painel esquerdo, selecione Executar e Depurar (Ctrl+Shift+D) e, em seguida, selecione Depurar na Ferramenta de Teste (Pré-visualização) na lista pendente.
A Ferramenta de Teste abre o bot numa página Web.
Veja uma apresentação do código fonte da aplicação bot
Pasta | Conteúdos |
---|---|
.vscode |
Visual Studio Code ficheiros para depuração. |
appPackage |
Modelos para o manifesto de aplicação do Teams. |
env |
Ficheiros de ambiente. |
infra |
Modelos para aprovisionar recursos do Azure. |
src |
O código fonte da aplicação. |
teamsapp.yml |
Este é o main ficheiro de projeto do Teams Toolkit. O ficheiro de projeto define duas coisas principais: Propriedades e definições de Fase de configuração. |
teamsapp.local.yml |
Isto substitui teamsapp.yml por ações que permitem a execução local e a depuração. |
teamsapp.testtool.yml |
Isto substitui teamsapp.yml por ações que permitem a execução local e a depuração na Ferramenta de Teste de Aplicações do Teams. |
src/index.js |
Configura o servidor da aplicação de bot. |
src/adapter.js |
Configura o adaptador de bot. |
src/config.js |
Define as variáveis de ambiente. |
src/prompts/chat/skprompt.txt |
Define o pedido. |
src/prompts/chat/config.json |
Configura o pedido. |
src/app/app.js |
Processa lógicas de negócio para o chatbot básico de IA. |
Como funciona o chatbot de IA do Teams
A biblioteca de IA do Teams fornece um fluxo para criar um chatbot inteligente com capacidades de IA da seguinte forma:
TurnContext: o objeto de contexto turn fornece informações sobre a atividade, como o remetente e o recetor, o canal e outros dados necessários para processar a atividade.
TurnState: o objeto de estado turn, semelhante a um cookie, armazena dados para a curva atual. Este objeto, como contexto de viragem, é transportado através de toda a lógica da aplicação, incluindo os processadores de atividade e o sistema de IA.
Autenticação: se a autenticação do utilizador estiver configurada, a IA do Teams tenta iniciar sessão do utilizador. Se o utilizador já tiver sessão iniciada, o SDK obtém o token de acesso e continua. Caso contrário, o SDK inicia o fluxo de início de sessão e termina a curva atual.
Processadores de Atividades: a biblioteca de IA do Teams executa um conjunto de processadores de atividades registados, permitindo-lhe lidar com vários tipos de atividades. O sistema do processador de atividades é o método principal para implementar a lógica da aplicação de extensão de bot ou mensagem. É um conjunto de métodos e configurações que lhe permite registar chamadas de retorno, conhecidas como processadores de rotas, que são acionadas com base na atividade de entrada. A atividade recebida pode estar sob a forma de uma mensagem, reação de mensagens ou praticamente qualquer interação na aplicação Teams.
Sistema de IA: o sistema de IA na biblioteca de IA do Teams é responsável por moderar entradas e saídas, gerar planos e executá-los. Pode ser utilizado como autónomo ou encaminhado para pelo objeto da aplicação. Os conceitos importantes são os seguintes:
- Gestor de pedidos: os pedidos desempenham um papel crucial na comunicação e na direção do comportamento da IA dos Modelos de Linguagem Grande (LLMs).
- Planner: o planeador recebe o pedido do utilizador, que se encontra sob a forma de um modelo de pedido de aviso ou pedido, e devolve um plano para o cumprir. Isto é conseguido através da utilização da IA para misturar e combinar funções atómicas, conhecidas como ações, que estão registadas no sistema de IA. Estas ações são recombinadas numa série de passos que completam um objetivo.
- Ações: uma ação é uma função atómica registada no sistema de IA.
Processador AfterTurn: após a execução do processador de atividades ou do sistema de IA, a biblioteca de IA do Teams executa um
afterTurn
processador. O processador permite-lhe efetuar uma ação após a curva. Se devolver comotrue
, o SDK guarda o estado de viragem no armazenamento.Responder ao utilizador: a biblioteca de IA do Teams guarda o estado e o bot pode enviar as respostas ao utilizador.
Personalizar o chatbot básico de IA
Pode adicionar personalizações sobre a aplicação básica para criar cenários complexos da seguinte forma:
Personalizar pedido: os pedidos desempenham um papel crucial na comunicação e na direção do comportamento da IA de LLMs. Servem como entradas ou consultas que os utilizadores podem fornecer para obter respostas específicas de um modelo. Eis um pedido que pede ao LLM sugestões de nome:
Solicitação
Give me 3 name suggestions for my pet golden retriever.
Response
Some possible name suggestions for a pet golden retriever are: - Bailey - Sunny - Cooper
Para utilizar o projeto gerado com o Teams Toolkit, pode criar as instruções no
src/prompts/chat/skprompt.txt
ficheiro. Os pedidos escritos neste ficheiro são inseridos no pedido utilizado para instruir o LLM. A biblioteca de IA do Teams define a seguinte sintaxe que pode utilizar no texto da linha de comandos:{{ $[scope].property }}
: a biblioteca de IA do Teams compõe o valor de uma propriedade que é confinada e definida no estado de viragem. Define três âmbitos: temporário, utilizador e conversação. Se não for especificado nenhum âmbito, por predefinição, a biblioteca utiliza o âmbito temporário.O
{{$[scope].property}}
é utilizado da seguinte forma:No ficheiro, defina o estado temporário, o estado do utilizador, o estado da conversação e o
src/app/turnState.ts
estado de viragem da aplicação. Se oturnState.ts
ficheiro não existir no projeto, crie-osrc/app
em .import { DefaultConversationState, DefaultTempState, DefaultUserState, TurnState } from "@microsoft/teams-ai"; export interface TempState extends DefaultTempState { } export interface UserState extends DefaultUserState { } export interface ConversationState extends DefaultConversationState { tasks: Record<string, Task>; } export interface Task { title: string; description: string; } export type ApplicationTurnState = TurnState<ConversationState, UserState, TempState>;
No ficheiro, utilize o
src/app/app.ts
estado de viragem da aplicação para inicializar a aplicação.const storage = new MemoryStorage(); const app = new Application<ApplicationTurnState>({ storage, ai: { planner, }, });
src/prompts/chat/skprompt.txt
No ficheiro, utilize a propriedade de estado no âmbito, como{{$conversation.tasks}}
.
Personalizar a entrada do utilizador: a biblioteca de IA do Teams permite-lhe aumentar o pedido enviado para o LLM ao incluir as entradas de utilizador. Ao incluir entradas de utilizador, tem de especificá-lo num ficheiro de configuração de pedido ao definir
completion.include_input
comotrue
emsrc/prompts/chat/config.json
. Opcionalmente, também pode configurar o número máximo de tokens de entrada de utilizador aosrc/prompts/chat/config.json
alterarcompletion.max_input_tokens
. Isto é útil quando quer limitar o comprimento das entradas de utilizador para evitar exceder o limite de tokens.Personalizar o histórico de conversações: o SDK gere automaticamente o histórico de conversações e pode personalizar da seguinte forma:
Em
src/prompts/chat/config.json
, configurecompletion.include_history
. Setrue
, o histórico é inserido na linha de comandos para que o LLM tenha conhecimento do contexto de conversação.Número máximo de mensagens do histórico. Configure
max_history_messages
ao inicializarPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_history_messages: 3, });
Número máximo de tokens do histórico. Configure
max_conversation_history_tok
ens ao inicializarPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_conversation_history_tokens: 1000, });
Personalizar o tipo de modelo: pode utilizar um modelo específico para uma linha de comandos.
src/prompts/chat/config.json
No ficheiro, configurecompletion.model
. Se não estiver configurado nenhum modelo para a linha de comandos, será utilizado o modelo predefinido configurado emOpenAIModel
.Os modelos que suportam o SDK da seguinte forma:
Modelo Com suporte gpt-3.5-turbo Com suporte gpt-3.5-turbo-16k Com suporte gpt-3.5-turbo-instrução Não suportado a partir da versão 1.1.0 gpt-4 Com suporte gpt-4-32k Com suporte gpt-4-vision Com suporte gpt-4-turbo Com suporte DALL· E Sem suporte Sussurro Sem suporte TTS Sem suporte Personalizar parâmetros de modelo:
src/prompts/chat/config.json
No ficheiro, configure os parâmetros do modelo em conclusão da seguinte forma:- Max_tokens: o número máximo de tokens a gerar.
- Temperatura: os modelos têm a temperatura como um número entre 0 e 2.
-
Top_p: os modelos
top_p
como um número entre 0 e 2. -
Presence_penalty: os modelos
presence_penalty
como um número entre 0 e 1. -
Frequency_penalty: os modelos
frequency_penalty
como um número entre 0 e 1. - Stop_sequences: matriz de sequências paradas que, quando as marcas de êxito param a geração.