Creación de un bot de chat de IA básico
La plantilla de bot de chat de inteligencia artificial muestra una aplicación de bot, similar a ChatGPT, que responde a las preguntas del usuario y permite a los usuarios interactuar con el bot de inteligencia artificial en Microsoft Teams. La biblioteca de inteligencia artificial de Teams se usa para compilar la plantilla de aplicación, lo que proporciona las funcionalidades necesarias para crear aplicaciones de Teams basadas en inteligencia artificial.
Requisitos previos
Instalar | Para usar... |
---|---|
Visual Studio Code | Entornos de compilación de JavaScript, TypeScript o Python. Use la versión más reciente. |
Kit de herramientas de Teams | Microsoft Visual Studio Code extensión que crea un scaffolding de proyecto para la aplicación. Use la versión más reciente. |
Node.js | Entorno de tiempo de ejecución de JavaScript de back-end. Para obtener más información, vea Node.js tabla de compatibilidad de versiones para el tipo de proyecto. |
Microsoft Teams | Microsoft Teams para colaborar con todos los usuarios con los que trabaje a través de aplicaciones para chat, reuniones y llamadas en un solo lugar. |
Azure OpenAI | En primer lugar, cree la clave de API de OpenAI para usar el transformador preentrenado generativo (GPT) de OpenAI. Si desea hospedar la aplicación o acceder a los recursos en Azure, debe crear un servicio Azure OpenAI. |
Creación de un nuevo proyecto básico de bot de chat de IA
Abra Visual Studio Code.
Seleccione el icono kit de herramientas de Teams en la barra de actividad de Visual Studio Code
Seleccione Crear una nueva aplicación.
Seleccione Agente de motor personalizado.
Seleccione Bot de chat de IA básica.
Seleccione JavaScript.
Seleccione Azure OpenAI.
Escriba las credenciales de OpenAI o Azure OpenAI en función del servicio que seleccione. Seleccione Introducir.
Seleccione Carpeta predeterminada.
Para cambiar la ubicación predeterminada, siga estos pasos:
- Seleccione Examinar.
- Seleccione la ubicación del área de trabajo del proyecto.
- Seleccione Seleccionar carpeta.
Escriba un nombre de aplicación para la aplicación y, a continuación, seleccione la tecla Entrar .
Ha creado correctamente el área de trabajo del proyecto de bot de chat de IA.
En EXPLORER, vaya al archivo env.env.testtool.user>.
Actualice los detalles siguientes:
SECRET_AZURE_OPENAI_API_KEY=<your-key>
AZURE_OPENAI_ENDPOINT=<your-endpoint>
AZURE_OPENAI_DEPLOYMENT_NAME=<your-deployment>
Para depurar la aplicación, seleccione la tecla F5 o en el panel izquierdo, seleccione Ejecutar y depurar (Ctrl+Mayús+D) y, a continuación, seleccione Depurar en la herramienta de prueba (versión preliminar) en la lista desplegable.
La herramienta de prueba abre el bot en una página web.
Realice un recorrido por el código fuente de la aplicación bot.
Folder | Contenido |
---|---|
.vscode |
Visual Studio Code archivos para la depuración. |
appPackage |
Plantillas para el manifiesto de aplicación de Teams. |
env |
Archivos de entorno. |
infra |
Plantillas para aprovisionar recursos de Azure. |
src |
Código fuente de la aplicación. |
teamsapp.yml |
Este es el archivo de proyecto principal del kit de herramientas de Teams. El archivo de proyecto define dos elementos principales: propiedades y definiciones de fase de configuración. |
teamsapp.local.yml |
Esto invalida teamsapp.yml con acciones que habilitan la ejecución y depuración locales. |
teamsapp.testtool.yml |
Esto invalida teamsapp.yml con acciones que habilitan la ejecución y depuración locales en la herramienta de prueba de aplicaciones de Teams. |
src/index.js |
Configura el servidor de aplicaciones de bot. |
src/adapter.js |
Configura el adaptador del bot. |
src/config.js |
Define las variables de entorno. |
src/prompts/chat/skprompt.txt |
Define el símbolo del sistema. |
src/prompts/chat/config.json |
Configura el símbolo del sistema. |
src/app/app.js |
Controla las lógicas de negocios para el bot de chat de IA básico. |
Funcionamiento del bot de chat de IA de Teams
La biblioteca de inteligencia artificial de Teams proporciona un flujo para crear un bot de chat inteligente con funcionalidades de inteligencia artificial como se indica a continuación:
TurnContext: el objeto de contexto de turno proporciona información sobre la actividad, como el remitente y el receptor, el canal y otros datos necesarios para procesar la actividad.
TurnState: el objeto de estado turn, similar a una cookie, almacena datos para el turno actual. Este objeto, como contexto de turno, se lleva a cabo a través de toda la lógica de la aplicación, incluidos los controladores de actividad y el sistema de inteligencia artificial.
Autenticación: si se configura la autenticación de usuario, Teams AI intenta iniciar sesión al usuario. Si el usuario ya ha iniciado sesión, el SDK recupera el token de acceso y continúa. De lo contrario, el SDK inicia el flujo de inicio de sesión y finaliza el turno actual.
Controladores de actividad: la biblioteca de inteligencia artificial de Teams ejecuta un conjunto de controladores de actividad registrados, lo que le permite controlar varios tipos de actividades. El sistema de controladores de actividad es el método principal para implementar la lógica de aplicación de extensión de mensaje o bot. Se trata de un conjunto de métodos y configuraciones que permiten registrar devoluciones de llamada, conocidas como controladores de rutas, que se desencadenan en función de la actividad entrante. La actividad entrante puede estar en forma de mensaje, reacción de mensaje o prácticamente cualquier interacción dentro de la aplicación de Teams.
Sistema de inteligencia artificial: el sistema de inteligencia artificial de la biblioteca de IA de Teams es responsable de moderar la entrada y salida, generar planes y ejecutarlos. Se puede usar como un objeto de aplicación independiente o enrutado a él. Los conceptos importantes son los siguientes:
- Administrador de mensajes: los mensajes desempeñan un papel crucial en la comunicación y la dirección del comportamiento de la inteligencia artificial de modelos de lenguaje grande (LLM).
- Planner: El planificador recibe la solicitud del usuario, que se encuentra en forma de solicitud o plantilla de aviso, y devuelve un plan para satisfacerla. Esto se logra mediante el uso de la inteligencia artificial para mezclar y hacer coincidir funciones atómicas, conocidas como acciones, que se registran en el sistema de inteligencia artificial. Estas acciones se vuelven a combinar en una serie de pasos que completan un objetivo.
- Acciones: una acción es una función atómica registrada en el sistema de inteligencia artificial.
Controlador AfterTurn: una vez ejecutado el controlador de actividad o el sistema de inteligencia artificial, la biblioteca de inteligencia artificial de Teams ejecuta un
afterTurn
controlador. El controlador permite realizar una acción después del turno. Si devuelve comotrue
, el SDK guarda el estado de turno en el almacenamiento.Responder al usuario: la biblioteca de inteligencia artificial de Teams guarda el estado y el bot puede enviar las respuestas al usuario.
Personalización del bot de chat de IA básico
Puede agregar personalizaciones sobre la aplicación básica para crear escenarios complejos como se indica a continuación:
Personalizar mensaje: los mensajes desempeñan un papel crucial en la comunicación y la dirección del comportamiento de la inteligencia artificial de LLM. Sirven como entradas o consultas que los usuarios pueden proporcionar para obtener respuestas específicas de un modelo. Este es un mensaje que pide al LLM sugerencias de nombre:
Solicitud
Give me 3 name suggestions for my pet golden retriever.
Respuesta
Some possible name suggestions for a pet golden retriever are: - Bailey - Sunny - Cooper
Para usar el proyecto generado con Teams Toolkit, puede crear los mensajes en el
src/prompts/chat/skprompt.txt
archivo. Las indicaciones escritas en este archivo se insertan en el símbolo del sistema que se usa para indicar al LLM. La biblioteca de inteligencia artificial de Teams define la siguiente sintaxis que puede usar en el texto de la solicitud:{{ $[scope].property }}
: la biblioteca de inteligencia artificial de Teams representa el valor de una propiedad que tiene el ámbito y se define dentro del estado de turno. Define tres ámbitos de este tipo: temp, user y conversation. Si no se especifica ningún ámbito, de forma predeterminada, la biblioteca usa el ámbito temporal.{{$[scope].property}}
Se usa de la siguiente manera:En el archivo, defina el
src/app/turnState.ts
estado temporal, el estado del usuario, el estado de conversación y el estado de turno de la aplicación. Si elturnState.ts
archivo no existe en el proyecto, créelo ensrc/app
.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>;
En el archivo, use el
src/app/app.ts
estado de turno de la aplicación para inicializar la aplicación.const storage = new MemoryStorage(); const app = new Application<ApplicationTurnState>({ storage, ai: { planner, }, });
En el
src/prompts/chat/skprompt.txt
archivo, use la propiedad de estado con ámbito, como{{$conversation.tasks}}
.
Personalización de la entrada del usuario: la biblioteca de inteligencia artificial de Teams le permite aumentar el mensaje enviado a LLM mediante la inclusión de las entradas del usuario. Al incluir entradas de usuario, debe especificarlo en un archivo de configuración del símbolo del sistema estableciendo
completion.include_input
true
en ensrc/prompts/chat/config.json
. También puede configurar opcionalmente el número máximo de tokens de entrada de usuario ensrc/prompts/chat/config.json
cambiandocompletion.max_input_tokens
. Esto resulta útil cuando se desea limitar la longitud de las entradas del usuario para evitar superar el límite de tokens.Personalización del historial de conversaciones: el SDK administra automáticamente el historial de conversaciones y puede personalizarlo de la siguiente manera:
En
src/prompts/chat/config.json
, configurecompletion.include_history
. Sitrue
es , el historial se inserta en el símbolo del sistema para permitir que LLM tenga en cuenta el contexto de conversación.Número máximo de mensajes de historial. Configure
max_history_messages
al inicializarPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_history_messages: 3, });
Número máximo de tokens de historial. Configure
max_conversation_history_tok
ens al inicializarPromptManager
.const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_conversation_history_tokens: 1000, });
Personalización del tipo de modelo: puede usar un modelo específico para una solicitud. En el
src/prompts/chat/config.json
archivo, configurecompletion.model
. Si no hay ningún modelo configurado para el símbolo del sistema, se usa el modelo predeterminado configurado enOpenAIModel
.Los modelos que admiten el SDK de la siguiente manera:
Model Compatible gpt-3.5-turbo Compatible gpt-3.5-turbo-16k Compatible gpt-3.5-turbo-instruct No compatible con la versión 1.1.0 gpt-4 Compatible gpt-4-32k Compatible gpt-4-vision Compatible gpt-4-turbo Compatible DALL· E No se admite Susurrar No se admite TTS No compatible Personalización de los parámetros del modelo:
En el
src/prompts/chat/config.json
archivo, configure los parámetros del modelo que se están completando de la siguiente manera:- Max_tokens: número máximo de tokens que se van a generar.
- Temperatura: el modelo de temperatura como un número entre 0 y 2.
-
Top_p: los modelos
top_p
como un número entre 0 y 2. -
Presence_penalty: los modelos
presence_penalty
como un número entre 0 y 1. -
Frequency_penalty: los modelos
frequency_penalty
como un número entre 0 y 1. - Stop_sequences: matriz de secuencias de detención que cuando se alcanza detiene la generación.