Integración de Azure OpenAI y otros servicios de inteligencia artificial
La integración de servicios de inteligencia artificial significa conectar el agente a uno o más modelos de lenguaje grandes o a cognitive services para darle "inteligencia". En nuestro caso, la integración principal es con el servicio OpenAI de Azure (o la API de OpenAI) para la comprensión y generación del lenguaje natural. A continuación se muestra cómo asegurarse de que se ha configurado correctamente, así como cómo incorporar otros componentes de Azure AI si es necesario:
Credenciales de Azure/OpenAI: al crear el proyecto, si escribió la clave y el punto de conexión de Azure OpenAI, la configuración del proyecto ya está establecida. Compruebe esto en el archivo .env (para JS, probablemente .env.local o .env.playground): debe contener algo parecido a AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY, etc., así como el nombre de implementación del modelo. En un proyecto de C#, pueden estar en appsettings.json o en código como parte de la llamada a AddOpenAI. Asegúrese de que estos valores son correctos. Sin una clave válida, el bot no podrá llamar al modelo.
Seleccionar modelos: decida qué modelo usar. GPT-4 proporciona una mejor calidad, pero es más lento y costoso, mientras que GPT-3.5 (gpt-35-turbo) es más rápido o más barato. Para un agente de chat de Teams, GPT-3.5 suele ser suficiente para Q&A o tareas sencillas; por motivos complejos o si el agente debe usar la acción Planner en gran medida, GPT-4 podría funcionar mejor. Puede configurar el nombre del modelo en la configuración. (Los nombres de implementación de Azure OpenAI suelen encapsular qué modelo).
Varios servicios de inteligencia artificial: el SDK de agentes de Microsoft 365 es flexible: puede integrar servicios de inteligencia artificial adicionales:
- Fundición de IA de Azure o servicio de agente: si su organización usa Fundición de IA de Azure (una plataforma para hospedar y organizar modelos y herramientas), puede conectar el bot a un "agente" o modelo de Foundry. Este es un escenario avanzado; básicamente, el bot se convierte en un front-end para una lógica de agente existente que se ejecuta en otro lugar.
- Cognitive Services: puede usar Azure Cognitive Services para tareas específicas. Ejemplo: Azure Language Understanding (LUIS) o respuesta a preguntas personalizada para NLP, o Form Recognizer si el bot necesita analizar documentos. Se pueden llamar como API desde el código del bot. Otro ejemplo: uso del servicio Voz de Azure si planea la entrada y salida de voz.
- Kernel semántico o LangChain: son marcos de orquestación que pueden administrar secuencias complejas de mensajes o invocaciones de herramientas. Si el escenario requiere una orquestación compleja (como conversaciones en varios pasos o llamadas a muchas herramientas), puede integrar kernel semántico en el bot. El SDK es compatible: puede invocar planificadores de SK dentro del controlador de mensajes. Esto es opcional; el orquestador integrado de la biblioteca de inteligencia artificial de Teams podría ser suficiente para muchos casos.
Generación aumentada de recuperación (RAG): integración de la recuperación (Azure Cognitive Search) para RAG: a. Para que el agente sea realmente útil, es posible que necesite que tenga conocimientos sobre el contenido de la empresa o datos específicos. Un procedimiento recomendado consiste en implementar la generación de Retrieval-Augmented (RAG), donde el bot captura los datos pertinentes de un origen de conocimiento y los introduce en el contexto del LLM, en lugar de depender únicamente de la memoria de entrenamiento del modelo. A continuación se muestra cómo configurarlo:
b. Preparar un origen de conocimiento: en el caso de los datos empresariales, se Azure Cognitive Search una opción popular. Indexaría los documentos (archivos PDF, manuales, páginas de SharePoint, etc.) en un índice de Azure Cognitive Search. Como alternativa, puede usar una base de datos vectorial (como Pinecone, Redis Embeddings, etc.). Pero Azure Search es conveniente e se integra bien con Azure OpenAI (incluso hay una característica integrada "Azure OpenAI en los datos").
Implementación de la recuperación en el bot: hay dos enfoques:
a. Recuperación en código: use el SDK de Azure Search (o API REST) para consultar el índice. Por ejemplo, cuando un usuario hace una pregunta, antes de llamar al LLM se toma la consulta del usuario, se llama al servicio Search, se obtienen los tres primeros resultados (fragmentos de texto) y, a continuación, se crea el mensaje final como: [Mensaje del sistema con instrucciones]\n[Pregunta del usuario]\n[Contenido recuperado]\n[Pregunta del usuario de nuevo o preguntar por respuesta mediante datos]. A continuación, envíelo a OpenAI. El SDK de Agentes no lo hace automáticamente; escribirá el código de pegado. Pero es sencillo: trate los resultados de la búsqueda como contexto adicional. El ejemplo de Microsoft "Weather Agent" u otros pueden tener una lógica de recuperación similar a la que hacer referencia.
b. Uso de las funcionalidades toolkit/Planner: si usa la biblioteca de inteligencia artificial de Teams, puede registrar una herramienta que realice una búsqueda. Por ejemplo, defina una función asincrónica de función performSearch(query) { /* llame a Azure Search API */ } y, a continuación, regístrela como una herramienta de inteligencia artificial: planner.tools.add("PerformSearch", performSearch, "Busca información relevante en la empresa knowledge base"). El Planner Acción puede decidir usar la herramienta cuando la consulta del usuario parece necesitar información externa. Incluirá el resultado de la herramienta en el símbolo del sistema para sí mismo. Se trata de un escenario más avanzado y requiere una ingeniería de aviso cuidadosa (para obtener la inteligencia artificial para invocar la herramienta), pero se alinea con el funcionamiento de las llamadas a funciones de OpenAI.
En nuestro escenario pro-código, la mayor parte de la integración de IA se trata de configurar los puntos de conexión del modelo y escribir la lógica de aviso. Las bibliotecas del SDK controlan el trabajo pesado (llamada a los puntos de conexión de OpenAI, los resultados de streaming, etc.). Por ejemplo, si usa la biblioteca de inteligencia artificial de Teams, una vez que proporcione la clave y el punto de conexión de OpenAI y especifique el modelo, llamar a planner.chain() enviará automáticamente el mensaje a Azure OpenAI y obtendrá la finalización automáticamente. Si usa Bot Framework puro en C#, puede llamar a la API REST de OpenAI o usar el SDK de Azure.AI.OpenAI dentro de la lógica del bot.