Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este documento hace referencia al portal de Microsoft Foundry (clásico).
🔍 Consulte la documentación de Microsoft Foundry (nuevo) para obtener información sobre el nuevo portal.
En este inicio rápido, usará sus propios datos con modelos de Azure OpenAI para crear una plataforma eficaz de inteligencia artificial conversacional que permita una comunicación más rápida y precisa.
Importante
Hay nuevas formas de crear soluciones conversacionales con sus propios datos. Para obtener el enfoque recomendado más reciente, consulte Inicio rápido: Uso de la recuperación agente en Búsqueda de Azure AI.
Prerrequisitos
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Área de juegos de chat
Comience a explorar las funcionalidades de Azure OpenAI con un enfoque sin código a través del área de juegos de chat. Se trata simplemente de un cuadro de texto donde puede enviar un mensaje para generar una finalización. Desde esta página puede iterar y experimentar rápidamente con las funcionalidades.
El área de juegos le ofrece opciones para adaptar su experiencia de chat. En el menú superior, puede seleccionar Implementar para determinar qué modelo genera una respuesta mediante los resultados de búsqueda del índice. Usted elige el número de mensajes anteriores que se van a incluir como historial de conversaciones para las respuestas generadas en el futuro. El historial de conversaciones proporciona contexto para generar respuestas relacionadas, pero también consume el uso de tokens. El indicador de progreso del token de entrada realiza un seguimiento del recuento de tokens de la pregunta que envía.
La configuración avanzada de la izquierda son parámetros en tiempo de ejecución, que proporcionan control sobre la recuperación y búsqueda de información relevante de los datos. Un buen caso de uso es cuando desea asegurarse de que las respuestas solo se generan en función de los datos o que el modelo no puede generar una respuesta basada en la información existente de los datos.
La estrictaidad determina la agresividad del sistema en el filtrado de documentos de búsqueda en función de sus puntuaciones de similitud. Establecer un valor de rigurosidad de 5 indica que el sistema filtrará los documentos de forma agresiva, aplicando un umbral de similitud muy alto. La búsqueda semántica puede resultar útil en este escenario porque los modelos de clasificación realizan un mejor trabajo de deducir la intención de la consulta. Los niveles de rigor más bajos producen respuestas más detalladas, pero también podrían incluir información que no está en su índice. Se establece en 3 de manera predeterminada.
Los documentos recuperados son un entero que se puede establecer en 3, 5, 10 o 20 y controla el número de fragmentos de documento proporcionados al modelo de lenguaje grande para formular la respuesta final. De forma predeterminada, está establecida en 5.
Cuando se habilita Limitar respuestas a los datos, el modelo intenta confiar solo en los documentos para las respuestas. Esto se establece en true de forma predeterminada.
Envíe la primera consulta. Los modelos de chat funcionan mejor en ejercicios de preguntas y respuestas. Por ejemplo, "¿Cuáles son mis planes de salud disponibles?", o "¿Cuál es la opción más de salud?".
Es probable que se produzcan errores en las consultas que requieren análisis de datos, como "¿Qué plan de salud es más popular?". Es probable que se produzca un error en las consultas que requieren información sobre todos los datos, como "¿Cuántos documentos he cargado?". Recuerde que el motor de búsqueda busca fragmentos que tengan términos, frases o construcciones exactos o similares a la consulta. Y aunque el modelo puede comprender la pregunta, si los resultados de búsqueda son fragmentos del conjunto de datos, no es la información adecuada para responder a ese tipo de pregunta.
Los chats están restringidos por el número de documentos (fragmentos) devueltos en la respuesta (limitado a 3-20 en el área de juegos del portal de Foundry). Como puede imaginar, plantear una pregunta sobre "todos los títulos" requiere un examen completo de todo el almacén de vectores.
Implementación del modelo
Una vez que esté satisfecho con la experiencia, puede implementar una aplicación web directamente desde el portal seleccionando el botón Implementar en .
Esto le ofrece la opción de implementar en una aplicación web independiente o un copiloto en Copilot Studio (versión preliminar) si está usando sus propios datos en el modelo.
Por ejemplo, si decide implementar una aplicación web:
La primera vez que implemente una aplicación web, debería seleccionar Crear una nueva aplicación web. Elija un nombre para la aplicación, que pasará a formar parte de la dirección URL de la aplicación. Por ejemplo: https://<appname>.azurewebsites.net.
Seleccione la suscripción, el grupo de recursos, la ubicación y el plan de precios de la aplicación publicada. Para actualizar una aplicación existente, seleccione Publicar en una aplicación web existente y elija el nombre de la aplicación anterior en el menú desplegable.
Si decide implementar una aplicación web, consulte las consideraciones importantes para usarla.
Prerrequisitos
- Una suscripción de Azure: cree una gratuitamente.
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
- SDK de .NET 8
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
En el directorio del proyecto, abra el archivo Program.cs y reemplace su contenido por el código siguiente:
using System;
using Azure.AI.OpenAI;
using System.ClientModel;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
AzureOpenAIClient openAIClient = new(
new Uri(azureOpenAIEndpoint),
new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.GetChatClient(deploymentName);
// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What health plans are available?"),
],
options);
ChatMessageContext onYourDataContext = completion.GetMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.WriteLine($"Citation: {citation.Content}");
}
Importante
En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte este artículo de seguridad .
dotnet run Program.cs
Salida
Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].
Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]
Citation:
Contoso Electronics plan and benefit packages
Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to
learn more about the various options available to you...// Omitted for brevity
Esto esperará hasta que el modelo haya generado toda su respuesta antes de imprimir los resultados.
Código fuente| Código fuente | Muestra
Prerrequisitos
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Una instancia de Azure OpenAI o implementada en una región admitida y con un modelo admitido.
- Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de variables necesarias
Para realizar correctamente una llamada a Azure OpenAI, necesitará las siguientes variables. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Para obtener más información, consulte Adición de datos mediante Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Puede encontrar este valor en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Como alternativa, puede encontrar el valor en Foundry>Área de juegos de chat>Vista Código. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_API_KEY |
Puede encontrar este valor en la sección Claves de administración> de recursosy punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Puede encontrar este valor en Administración de Recursos>Implementaciones en el portal de Azure, o como alternativa, en Administración>Implementaciones en el portal de Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Puede encontrar este valor en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Puede encontrar este valor en la secciónClaves de > al examinar el recurso de Azure AI Search desde Azure Portal. Puede usar la clave de administrador principal o la clave de administrador secundaria. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Variables de entorno
Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.
Importante
Use las claves de API con precaución. No incluya la clave de API directamente en el código ni la exponga nunca públicamente. Si está usando una clave de API, almacénela de forma segura en Azure Key Vault. Para más información sobre cómo utilizar las claves de API de forma segura en sus aplicaciones, consulte Claves de API con Azure Key Vault.
Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
Nota:
Spring AI tiene como valor predeterminado el nombre del modelo en gpt-35-turbo. Solo es necesario proporcionar el valor SPRING_AI_AZURE_OPENAI_MODEL si ha implementado un modelo con otro nombre.
export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE
Creación de una nueva aplicación de Spring
Spring AI no admite actualmente las AzureCognitiveSearchChatExtensionConfiguration opciones que permiten que una consulta de Azure AI encapsula el método De generación aumentada de recuperación (RAG) y oculte los detalles del usuario. Como alternativa, todavía puede invocar el método RAG directamente en la aplicación para consultar datos en el índice de Búsqueda de Azure AI y usar documentos recuperados para aumentar la consulta.
Spring AI admite una abstracción de VectorStore y puede encapsular Búsqueda de Azure AI en una implementación de Spring AI VectorStore para consultar los datos personalizados. El siguiente proyecto implementa un VectorStore personalizado respaldado por Búsqueda de Azure AI y ejecuta directamente operaciones RAG.
En una ventana de Bash, cree un nuevo directorio para la aplicación y diríjase a él.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Ejecute el comando spring init desde el directorio de trabajo. Este comando crea una estructura de directorio estándar para el proyecto de Spring, incluido el archivo de origen de la clase Java principal y el archivo pom.xml que se usa para administrar proyectos basados en Maven.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Los archivos y carpetas generados son similares a la estructura siguiente:
ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
|-- main/
| |-- resources/
| | |-- application.properties
| |-- java/
| |-- com/
| |-- example/
| |-- aicustomdatademo/
| |-- AiCustomDataApplication.java
|-- test/
|-- java/
|-- com/
|-- example/
|-- aicustomdatademo/
|-- AiCustomDataApplicationTests.java
Edición de la aplicación de Spring
Edite el archivo pom.xml.
Desde la raíz del directorio del proyecto, abra el archivo pom.xml en su editor o IDE preferido y sobrescriba el archivo con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>ai-custom-data-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>AICustomData</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-search-documents</artifactId> <version>11.6.0-beta.10</version> <exclusions> <!-- exclude this to avoid changing the default serializer and the null-value behavior --> <exclusion> <groupId>com.azure</groupId> <artifactId>azure-core-serializer-json-jackson</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> </project>En la carpeta src/main/java/com/example/aicustomdatademo , abra AiCustomDataApplication.java en el editor o IDE preferidos y pegue el código siguiente:
package com.example.aicustomdatademo; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; import org.springframework.ai.client.AiClient; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.prompt.Prompt; import org.springframework.ai.prompt.SystemPromptTemplate; import org.springframework.ai.prompt.messages.MessageType; import org.springframework.ai.prompt.messages.UserMessage; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Context; import com.azure.search.documents.SearchClient; import com.azure.search.documents.SearchClientBuilder; import com.azure.search.documents.models.IndexingResult; import com.azure.search.documents.models.SearchOptions; import com.azure.search.documents.models.RawVectorQuery; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.extern.jackson.Jacksonized; @SpringBootApplication public class AiCustomDataApplication implements CommandLineRunner { private static final String ROLE_INFO_KEY = "role"; private static final String template = """ You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers. DOCUMENTS: {documents} """; @Value("${spring.ai.azure.cognitive-search.endpoint}") private String acsEndpoint; @Value("${spring.ai.azure.cognitive-search.api-key}") private String acsApiKey; @Value("${spring.ai.azure.cognitive-search.index}") private String acsIndexName; @Autowired private AiClient aiClient; @Autowired private EmbeddingClient embeddingClient; public static void main(String[] args) { SpringApplication.run(AiCustomDataApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(String.format("Sending custom data prompt to Foundry Tool. One moment please...\r\n")); final var store = vectorStore(embeddingClient); final String question = "What are my available health plans?"; final var candidateDocs = store.similaritySearch(question); final var userMessage = new UserMessage(question); final String docPrompts = candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template); final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts)); final var prompt = new Prompt(List.of(systemMessage, userMessage)); final var resps = aiClient.generate(prompt); System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size())); resps.getGenerations().stream() .forEach(gen -> { final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue()); System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText())); }); } @Bean public VectorStore vectorStore(EmbeddingClient embeddingClient) { final SearchClient searchClient = new SearchClientBuilder() .endpoint(acsEndpoint) .credential(new AzureKeyCredential(acsApiKey)) .indexName(acsIndexName) .buildClient(); return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient); } public static class AzureCognitiveSearchVectorStore implements VectorStore { private static final int DEFAULT_TOP_K = 4; private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0; private SearchClient searchClient; private final EmbeddingClient embeddingClient; public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient) { this.searchClient = searchClient; this.embeddingClient = embeddingClient; } @Override public void add(List<Document> documents) { final var docs = documents.stream().map(document -> { final var embeddings = embeddingClient.embed(document); return new DocEntry(document.getId(), "", document.getContent(), embeddings); }).toList(); searchClient.uploadDocuments(docs); } @Override public Optional<Boolean> delete(List<String> idList) { final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build()) .toList(); var results = searchClient.deleteDocuments(docIds); boolean resSuccess = true; for (IndexingResult result : results.getResults()) if (!result.isSucceeded()) { resSuccess = false; break; } return Optional.of(resSuccess); } @Override public List<Document> similaritySearch(String query) { return similaritySearch(query, DEFAULT_TOP_K); } @Override public List<Document> similaritySearch(String query, int k) { return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD); } @Override public List<Document> similaritySearch(String query, int k, double threshold) { final var searchQueryVector = new RawVectorQuery() .setVector(toFloatList(embeddingClient.embed(query))) .setKNearestNeighborsCount(k) .setFields("contentVector"); final var searchResults = searchClient.search(null, new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE); return searchResults.stream() .filter(r -> r.getScore() >= threshold) .map(r -> { final DocEntry entry = r.getDocument(DocEntry.class); final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap()); doc.setEmbedding(entry.getContentVector()); return doc; }) .collect(Collectors.toList()); } private List<Float> toFloatList(List<Double> doubleList) { return doubleList.stream().map(Double::floatValue).toList(); } } @Data @Builder @Jacksonized @AllArgsConstructor @NoArgsConstructor static class DocEntry { private String id; private String hash; private String content; private List<Double> contentVector; } }Importante
En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte este artículo de seguridad .
Vuelva a la carpeta raíz del proyecto y ejecute la aplicación mediante el comando siguiente:
./mvnw spring-boot:run
Salida
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.5)
2023-11-07T14:40:45.250-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to Foundry Tool. One moment please...
Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Documentación de referencia | Código fuente | Paquete (npm) | Ejemplos
Prerrequisitos
Una suscripción de Azure: cree una gratuitamente.
La CLI de Azure se ha usado para la autenticación sin contraseña en un entorno de desarrollo local, cree el contexto necesario iniciando sesión con la CLI de Azure.
Un recurso de Azure OpenAI implementado en una región admitida y con un modelo compatible.
Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe hacer lo siguiente:
- Instale la CLI de Azure utilizada para la autenticación sin clave con Microsoft Entra ID.
- Asignar el rol
Cognitive Services Usera su cuenta de usuario. Puede asignar roles en el portal de Azure bajo control de acceso (IAM)>Agregar asignación de roles.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Configuración
Cree una nueva carpeta
use-data-quickstarty vaya a la carpeta quickstart mediante el siguiente comando:mkdir use-data-quickstart && cd use-data-quickstartCree el
package.jsoncon el comando siguiente:npm init -yInstale la biblioteca cliente de OpenAI para JavaScript con:
npm install openaiPara la autenticación sin contraseña recomendada:
npm install @azure/identity
Adición del código de JavaScript
Cree el archivo
index.jscon el código siguiente:const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); const { AzureOpenAI } = require("openai"); // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-10-21"; function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Inicie sesión en Azure con el siguiente comando:
az loginEjecute el archivo JavaScript.
node index.js
Salida
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Documentación de referencia | Código fuente | Paquete (npm) | Ejemplos
Prerrequisitos
Una suscripción de Azure: cree una gratuitamente.
La CLI de Azure se ha usado para la autenticación sin contraseña en un entorno de desarrollo local, cree el contexto necesario iniciando sesión con la CLI de Azure.
Un recurso de Azure OpenAI implementado en una región admitida y con un modelo compatible.
Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe hacer lo siguiente:
- Instale la CLI de Azure utilizada para la autenticación sin clave con Microsoft Entra ID.
- Asignar el rol
Cognitive Services Usera su cuenta de usuario. Puede asignar roles en el portal de Azure bajo control de acceso (IAM)>Agregar asignación de roles.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Configuración
Cree una nueva carpeta
use-data-quickstarty vaya a la carpeta quickstart mediante el siguiente comando:mkdir use-data-quickstart && cd use-data-quickstartCree el
package.jsoncon el comando siguiente:npm init -yActualice el
package.jsona ECMAScript con el siguiente comando:npm pkg set type=moduleInstale la biblioteca cliente de OpenAI para JavaScript con:
npm install openaiPara la autenticación sin contraseña recomendada:
npm install @azure/identity
Este es el código TypeScript
Cree el archivo
index.tscon el código siguiente:import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import "@azure/openai/types"; // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Cree el archivo
tsconfig.jsonpara transpilar el código TypeScript y copie el código siguiente para ECMAScript.{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }Transpile de TypeScript a JavaScript.
tscInicie sesión en Azure con el siguiente comando:
az loginEjecute el código con el siguiente comando:
node index.js
Importante
En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte este artículo de seguridad .
Salida
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Prerrequisitos
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Un recurso de Azure OpenAI implementado en una región admitida y con un modelo compatible.
- Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Referencia | Código fuente | Paquete (pypi) | Muestras
Los vínculos hacen referencia a OpenAI API para Python. No hay ningún SDK de Python de OpenAI específico de Azure. Aprenda a cambiar entre los servicios de OpenAI y Azure OpenAI.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Crear un entorno de Python
- Cree una carpeta denominada openai-python para el proyecto y un nuevo archivo de código de Python denominado main.py. Cambie a ese directorio:
mkdir openai-python
cd openai-python
- Instale las siguientes bibliotecas de Python:
pip install openai
pip install python-dotenv
Crear la aplicación de Python
- En el directorio del proyecto, abra el archivo main.py y agregue el código siguiente:
import os
import openai
import dotenv
dotenv.load_dotenv()
endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")
client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-10-21",
)
completion = client.chat.completions.create(
model=deployment,
messages=[
{
"role": "user",
"content": "What are my available health plans?",
},
],
extra_body={
"data_sources":[
{
"type": "azure_search",
"parameters": {
"endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
"index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
"authentication": {
"type": "api_key",
"key": os.environ["AZURE_AI_SEARCH_API_KEY"],
}
}
}
],
}
)
print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")
Importante
En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte este artículo de seguridad .
- Ejecute el comando siguiente:
python main.py
La aplicación imprime la respuesta en un formato JSON adecuado para su uso en muchos escenarios. Incluye tanto respuestas a su consulta como citas de los archivos cargados.
Prerrequisitos
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Un recurso de Azure OpenAI implementado en una región admitida y con un modelo compatible.
- Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Comandos de PowerShell de ejemplo
Los modelos de chat de Azure OpenAI están optimizados para trabajar con entradas con formato de conversación. La variable messages pasa una matriz de diccionarios con distintos roles en la conversación, delineada por sistemas, usuarios y asistentes. La variable dataSources se conecta al índice de Azure Cognitive Search y permite a los modelos de Azure OpenAI responder usando sus datos.
Para desencadenar una respuesta del modelo, debe terminar con un mensaje de usuario indicando que es el turno de responder del asistente.
Sugerencia
Hay varios parámetros que puede usar para cambiar la respuesta del modelo, como temperature o top_p. Consulte la documentación de referencia para obtener más información.
# Azure OpenAI metadata variables
$openai = @{
api_key = $Env:AZURE_OPENAI_API_KEY
api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_version = '2023-07-01-preview' # this may change in the future
name = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
}
$acs = @{
search_endpoint = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
search_key = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
}
# Completion text
$body = @{
dataSources = @(
@{
type = 'AzureCognitiveSearch'
parameters = @{
endpoint = $acs.search_endpoint
key = $acs.search_key
indexName = $acs.search_index
}
}
)
messages = @(
@{
role = 'user'
content = 'What are my available health plans?'
}
)
} | convertto-json -depth 5
# Header for authentication
$headers = [ordered]@{
'api-key' = $openai.api_key
}
# Send a completion call to generate an answer
$url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.choices.messages[1].content
Salida de ejemplo
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Importante
En entornos de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como PowerShell Secret Management con Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte este artículo de seguridad .
Chatee con el modelo a través de una aplicación web
Para empezar a chatear con el modelo de Azure OpenAI que usa los datos, puede implementar una aplicación web mediante el portal de Microsoft Foundry o el código de ejemplo que proporcionamos en GitHub. Esta aplicación se implementa con Azure App Service y proporciona una interfaz de usuario para enviar consultas. Esta aplicación se puede usar por modelos de Azure OpenAI que usen sus datos o modelos que no los usen. Consulte el archivo Léame en el repositorio para obtener instrucciones sobre los requisitos, la configuración y la implementación. Opcionalmente, puede personalizar la lógica de front-end y back-end de la aplicación web realizando cambios en el código fuente.
Prerrequisitos
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Un recurso de Azure OpenAI implementado en una región admitida y con un modelo compatible.
- Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Referencia | Código fuente | Paquete (Go) | Muestras
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe hacer lo siguiente:
- Instale la CLI de Azure utilizada para la autenticación sin clave con Microsoft Entra ID.
- Asignar el rol
Cognitive Services Usera su cuenta de usuario. Puede asignar roles en el portal de Azure bajo control de acceso (IAM)>Agregar asignación de roles.
Configuración
Cree una nueva carpeta
dall-e-quickstarty vaya a la carpeta quickstart mediante el siguiente comando:mkdir dall-e-quickstart && cd dall-e-quickstartPara la autenticación sin clave recomendada con Microsoft Entra ID, inicie sesión en Azure con el siguiente comando:
az login
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Ejecución del inicio rápido
En este inicio rápido, el código de ejemplo usa Microsoft Entra ID para la autenticación sin clave recomendada. Si prefiere usar una clave de API, puede reemplazar la NewDefaultAzureCredential implementación por NewKeyCredential.
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
Para ejecutar el ejemplo:
Cree un archivo denominado quickstart.go. Copie el código siguiente en el archivo quickstart.go .
package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" ) func main() { azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") credential, err := azidentity.NewDefaultAzureCredential(nil) client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil) modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME") // Azure AI Search configuration searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX") searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT") searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY") if modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{ Messages: []azopenai.ChatRequestMessageClassification{ &azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")}, }, MaxTokens: to.Ptr[int32](512), AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{ &azopenai.AzureSearchChatExtensionConfiguration{ // This allows Azure OpenAI to use an Azure AI Search index. // Answers are based on the model's pretrained knowledge // and the latest information available in the designated data source. Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n", *resp.Choices[0].Message.Role, len(*resp.Choices[0].Message.Content)) fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n", *resp.Choices[0].Message.Role, *resp.Choices[0].Message.Content, ) }Ejecute el siguiente comando para crear un nuevo módulo de Go:
go mod init quickstart.goEjecute
go mod tidypara instalar las dependencias necesarias:go mod tidyEjecute el siguiente comando para ejecutar el ejemplo:
go run quickstart.go
La aplicación imprime la respuesta, que incluye tanto las respuestas a la consulta como las citas de los archivos cargados.
Prerrequisitos
- Azure OpenAI
- Azure Blob Storage
- Azure AI Search
- Un recurso de Azure OpenAI implementado en una región admitida y con un modelo compatible.
- Asegúrese de que tiene asignado al menos el rol Colaborador de Cognitive Services para el recurso de Azure OpenAI.
- Descargue los datos de ejemplo de GitHub si no tiene sus propios datos.
Adición de datos mediante el portal de Microsoft Foundry
Sugerencia
Como alternativa, puede usar la CLI para desarrolladores de Azure para crear de forma programática los recursos necesarios para Azure OpenAI en sus datos.
Para agregar los datos mediante el portal:
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el conmutador New Foundry está desactivado. Estos pasos hacen referencia a Foundry (clásico).
Seleccione el recurso de Azure OpenAI. Si tiene un recurso Foundry, puede crear un proyecto foundry.
En el panel izquierdo, seleccione Playgrounds>Chat.
En el panel Configuración , seleccione la implementación del modelo.
Seleccione Agregar los datos>Agregar un origen de datos.
En la página Origen de datos :
En Seleccionar origen de datos, seleccione Cargar archivos (versión preliminar) .
Sugerencia
- Esta opción requiere un recurso de Azure Blob Storage y un recurso de Azure AI Search para acceder a los datos e indexarlos. Para obtener más información, consulte Opciones de origen de datos y Tipos y formatos de archivo admitidos.
- Para documentos y conjuntos de datos con texto largo, se recomienda usar el script de preparación de datos.
El uso compartido de recursos entre orígenes (CORS) es necesario para que Azure OpenAI acceda a la cuenta de almacenamiento. Si CORS aún no está habilitado para el recurso de Azure Blob Storage, seleccione Activar CORS.
Seleccione el recurso de Azure AI Search.
Escriba un nombre para el nuevo índice.
Active la casilla que confirma los efectos de facturación del uso de Azure AI Search.
Seleccione Siguiente.
En la página Cargar archivos :
Seleccione Examinar un archivo y, a continuación, seleccione sus propios datos o los datos de ejemplo que descargó de los requisitos previos.
Seleccione Upload files (Cargar archivos).
Seleccione Siguiente.
En la página Administración de datos :
Elija si quiere habilitar la búsqueda semántica o la búsqueda de vectores para el índice.
Importante
- La búsqueda semántica y la búsqueda vectorial están sujetas a precios adicionales. El recurso de Azure AI Search debe estar en el nivel Básico o superior para habilitar la búsqueda semántica o la búsqueda vectorial. Para obtener más información, consulte Elegir un nivel y límites de servicio.
- Para ayudar a mejorar la calidad de la recuperación de información y la respuesta del modelo, se recomienda habilitar la búsqueda semántica para los siguientes idiomas de origen de datos: inglés, francés, español, portugués, italiano, alemania, chino (Zh), japonés, coreano, ruso y árabe.
Seleccione Siguiente.
En la página Conexión de datos :
Elija si desea autenticarse mediante una identidad administrada asignada por el sistema o una clave de API.
Seleccione Siguiente.
Revise las configuraciones y, a continuación, seleccione Guardar y cerrar.
Ahora puede chatear con el modelo, que usa los datos para construir la respuesta.
Recuperación de información de recursos
Debe recuperar la siguiente información para autenticar la aplicación con el recurso de Azure OpenAI. Este inicio rápido supone que cargó los datos en una cuenta de Azure Blob Storage y que creó un índice de Azure AI Search. Consulte Adición de datos mediante el portal de Microsoft Foundry.
| Nombre de la variable | Importancia |
|---|---|
AZURE_OPENAI_ENDPOINT |
Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso de Azure OpenAI desde Azure Portal. Ejemplo de punto de conexión: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor se corresponde con el nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de Recursos>Implementaciones en el Portal de Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Este valor se puede encontrar en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
AZURE_AI_SEARCH_INDEX |
Este valor se corresponde con el nombre del índice que creó para almacenar los datos. Puede encontrarlo en la sección Información general al examinar el recurso de Azure AI Search desde Azure Portal. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Comandos cURL de ejemplo
Los modelos de chat de Azure OpenAI están optimizados para trabajar con entradas con formato de conversación. La variable messages pasa una matriz de diccionarios con distintos roles en la conversación, delineada por sistemas, usuarios y asistentes. La variable dataSources se conecta al índice de Azure AI Search y permite a los modelos de Azure OpenAI responder usando sus datos.
Para desencadenar una respuesta del modelo, debe terminar con un mensaje de usuario indicando que es el turno de responder del asistente.
Sugerencia
Hay varios parámetros que puede usar para cambiar la respuesta del modelo, como temperature o top_p. Consulte la documentación de referencia para obtener más información.
curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_NAME/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'",
"authentication": {
"type": "api_key",
"key": "'$AZURE_AI_SEARCH_API_KEY'"
}
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
Salida de ejemplo
{
"id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
"model": "gpt-4",
"created": 1709835345,
"object": "extensions.chat.completion",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
"end_turn": true,
"context": {
"citations": [
{
"content": "...",
"title": "...",
"url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
"filepath": "001.txt",
"chunk_id": "0"
}
],
"intent": "[\"Available health plans\"]"
}
}
}
],
"usage": {
"prompt_tokens": 3779,
"completion_tokens": 105,
"total_tokens": 3884
},
"system_fingerprint": "fp_65792305e4"
}
Chatee con el modelo a través de una aplicación web
Para empezar a chatear con el modelo de Azure OpenAI que usa los datos, puede implementar una aplicación web mediante el portal de Microsoft Foundry o el código de ejemplo que proporcionamos en GitHub. Esta aplicación se implementa con Azure App Service y proporciona una interfaz de usuario para enviar consultas. Esta aplicación se puede usar por modelos de Azure OpenAI que usen sus datos o modelos que no los usen. Consulte el archivo Léame en el repositorio para obtener instrucciones sobre los requisitos, la configuración y la implementación. Opcionalmente, puede personalizar la lógica de front-end y back-end de la aplicación web realizando cambios en el código fuente.
Limpieza de recursos
Si quiere limpiar y quitar un recurso de Azure OpenAI o Azure AI Search, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.