Leer en inglés

Compartir vía


SDK de Azure AI Foundry

El SDK de Azure AI Foundry es una completa cadena de herramientas diseñada para simplificar el desarrollo de aplicaciones de inteligencia artificial en Azure. Permite a los desarrolladores:

  • Acceder a modelos conocidos de varios proveedores de modelos a través de una sola interfaz.
  • Combinar fácilmente servicios de modelos, datos e inteligencia artificial para crear aplicaciones con tecnología de IA.
  • Evaluar, depurar y mejorar la calidad y la seguridad de las aplicaciones en entornos de desarrollo, pruebas y producción.

El SDK de AI Foundry es un conjunto de paquetes y servicios diseñados para funcionar juntos. Puede usar la biblioteca cliente de proyectos de Azure AI para usar fácilmente varios servicios mediante un único cliente de proyecto y cadena de conexión. También puede usar servicios y SDK por su cuenta y conectarse directamente a sus servicios.

Si quiere empezar de inmediato y crear directamente una aplicación, eche un vistazo a:

Introducción a los proyectos

La mejor manera de empezar a usar el SDK de Azure AI Foundry es mediante un proyecto. Los proyectos de IA conectan diferentes datos, recursos y servicios que se necesitan para crear aplicaciones de IA. El cliente de proyectos de IA permite acceder fácilmente a estos componentes del proyecto desde el código mediante una sola cadena de conexión.

En primer lugar, siga los pasos para crear un proyecto de IA si aún no tiene uno.

Inicie sesión con la CLI de Azure con la misma cuenta que usa para acceder al proyecto de IA:

az login

Instale la biblioteca cliente de proyectos de Azure AI:

pip install azure-ai-projects azure-identity

Cree un cliente de proyecto con código:

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

project_connection_string="your_connection_string"

project = AIProjectClient.from_connection_string(
  conn_str=project_connection_string,
  credential=DefaultAzureCredential())
dotnet add package Azure.AI.Projects
dotnet add package Azure.Identity

Adición de instrucciones using:

using Azure.Identity;
using Azure.AI.Projects;

Cree un cliente de proyecto con código:

var connectionString = "<your_connection_string>";
var projectClient = new AIProjectClient(connectionString, new DefaultAzureCredential());

Copie la cadena de conexión del proyecto desde la página Información general del proyecto y actualice el valor de la cadena de conexiones anterior.

Una vez creado el cliente del proyecto, puede usar el cliente con las funcionalidades de las secciones siguientes.

Asegúrese de consultar la referencia y las muestras.

Asegúrese de consultar la referencia y las muestras.

Azure OpenAI Service

Azure OpenAI Service proporciona acceso a los modelos de OpenAI, incluidas las series de modelos GPT-4o, GPT-4o mini, GPT-4, GPT-4 Turbo con Vision, DALLE-3, Whisper y Embeddings, con las funcionalidades de residencia de datos, escalabilidad, protección y empresariales Azure.

Si tiene código que usa el SDK de OpenAI, puede dirigirlo fácilmente para usar el servicio Azure OpenAI. En primer lugar, instale el SDK de OpenAI:

pip install openai

Si tiene código que usa el SDK de OpenAI, puede usar el cliente del proyecto para crear un cliente AzureOpenAI que use la conexión de Azure OpenAI del proyecto:

openai = project.inference.get_azure_openai_client(api_version="2024-06-01")
response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful writing assistant"},
        {"role": "user", "content": "Write me a poem about flowers"},
    ]
)

print(response.choices[0].message.content)
dotnet add package Azure.AI.OpenAI

Adición de instrucciones using:

using OpenAI.Chat;
using Azure.AI.OpenAI;

Si tiene código que usa el SDK de OpenAI, puede usar el cliente del proyecto para crear un cliente AzureOpenAI que use la conexión de Azure OpenAI del proyecto:

var connections = projectClient.GetConnectionsClient();
ConnectionResponse connection = connections.GetDefaultConnection(ConnectionType.AzureOpenAI, withCredential: true);
var properties = connection.Properties as ConnectionPropertiesApiKeyAuth;

if (properties == null) {
    throw new Exception("Invalid auth type, expected API key auth");
}

// Create and use an Azure OpenAI client
AzureOpenAIClient azureOpenAIClient = new(
    new Uri(properties.Target),
    new AzureKeyCredential(properties.Credentials.Key));

// This must match the custom deployment name you chose for your model
ChatClient chatClient = azureOpenAIClient.GetChatClient("gpt-4o-mini");

ChatCompletion completion = chatClient.CompleteChat(
    [
        new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
        new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
        new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
        new UserChatMessage("Do other Azure AI services support this too?")
    ]);

Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");

Si ya usa el SDK de Azure OpenAI directamente con el servicio Azure OpenAI, el proyecto proporciona una manera cómoda de usar las funcionalidades de Azure OpenAI Service junto con el resto de las funcionalidades de AI Foundry.

Servicio de inferencia de modelos de Azure AI

El servicio Azure AI Model Inference ofrece acceso a modelos eficaces de proveedores líderes como OpenAI, Microsoft, Meta, etc. Estos modelos admiten tareas como la generación de contenido, el resumen y la generación de código.

Para usar el servicio de inferencia de modelos, asegúrese primero de que el proyecto tenga una conexión a AI Services (en el centro de administración).

Instale la biblioteca cliente azure-ai-inferencing:

pip install azure-ai-inference

Puede usar el cliente del proyecto para obtener un elemento ChatCompletionsClient o EmbeddingsClient configurado y autenticado:

# get an chat inferencing client using the project's default model inferencing endpoint
chat = project.inference.get_chat_completions_client()

# run a chat completion using the inferencing client
response = chat.complete(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful writing assistant"},
        {"role": "user", "content": "Write me a poem about flowers"},
    ]
)

print(response.choices[0].message.content)
dotnet add package Azure.AI.Inference

Adición de instrucciones using:

using Azure.AI.Inference;

Puede usar el cliente del proyecto para obtener un elemento ChatCompletionsClient o EmbeddingsClient configurado y autenticado:

var connectionString = Environment.GetEnvironmentVariable("AIPROJECT_CONNECTION_STRING");
var projectClient = new AIProjectClient(connectionString, new DefaultAzureCredential());

ChatCompletionsClient chatClient = projectClient.GetChatCompletionsClient();

var requestOptions = new ChatCompletionsOptions()
{
    Messages =
        {
            new ChatRequestSystemMessage("You are a helpful assistant."),
            new ChatRequestUserMessage("How many feet are in a mile?"),
        },
    Model = "gpt-4o-mini"
};

Response<ChatCompletions> response = chatClient.Complete(requestOptions);
Console.WriteLine(response.Value.Content);

Puede cambiar el nombre del modelo por el de cualquier modelo que haya implementado en el servicio de inferencia o en Azure OpenAI Service.

Para más información sobre el uso del cliente de inferencia de Azure AI, consulte la referencia de inferencia de modelos de Azure AI.

Plantillas de indicación

El cliente de inferencia admite la creación de mensajes de indicaciones a partir de plantillas. La plantilla permite generar indicaciones dinámicamente mediante entradas que están disponibles en tiempo de ejecución.

Para usar plantillas de indicación, instale el paquete azure-ai-inferencing:

pip install azure-ai-inference

Puede representar una plantilla de indicación desde una cadena insertada:

from azure.ai.inference.prompts import PromptTemplate

# create a prompt template from an inline string (using mustache syntax)
prompt_template = PromptTemplate.from_string(prompt_template="""
    system:
    You are a helpful writing assistant.
    The user's first name is {{first_name}} and their last name is {{last_name}}.

    user:
    Write me a poem about flowers
    """)

# generate system message from the template, passing in the context as variables
messages = prompt_template.create_messages(first_name="Jane", last_name="Doe")
print(messages)

Nota

El espacio en blanco inicial se recorta automáticamente de las cadenas de entrada.

Este código genera mensajes que puede pasar a una llamada de finalización de chat:

[
  {'role': 'system', 'content': "You are a helpful writing assistant.\nThe user's first name is Jane and their last name is Doe."}
  {'role': 'user', 'content': 'Write me a poem about flowers'}
]

También puede cargar indicaciones desde un archivo Prompty, lo que le permite cargar también el nombre del modelo y los parámetros desde el archivo .prompty:

from azure.ai.inference.prompts import PromptTemplate

prompt_template = PromptTemplate.from_prompty("myprompt.prompty")
messages = prompt_template.create_messages(first_name="Jane", last_name="Doe")

response = chat.complete(
    messages=messages,
    model=prompt_template.model_name,
    **prompt_template.parameters,
)

Si tiene un recurso de Búsqueda de Azure AI conectado al proyecto, también puede usar el cliente del proyecto para crear un cliente de Búsqueda de Azure AI mediante la conexión del proyecto.

Instale la biblioteca cliente de Búsqueda de Azure AI:

pip install azure-search-documents

Cree una instancia del cliente de índice de búsqueda o búsqueda según sea necesario:

from azure.core.credentials import AzureKeyCredential
from azure.ai.projects.models import ConnectionType
from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient

# use the project client to get the default search connection
search_connection = project.connections.get_default(
    connection_type=ConnectionType.AZURE_AI_SEARCH,
    with_credentials=True)

# Create a client to create and manage search indexes
index_client = SearchIndexClient(
    endpoint=search_connection.endpoint_url,
    credential=AzureKeyCredential(key=search_connection.key)
)

# Create a client to run search queries
search_client = SearchClient(
    index_name="your_index_name",
    endpoint=search_connection.endpoint_url,
    credential=AzureKeyCredential(key=search_connection.key)
)
dotnet add package Azure.Search.Documents

Adición de instrucciones using:

using Azure.Search.Documents;
using Azure.Search.Documents.Models;

Cree una instancia del cliente de índice de búsqueda o búsqueda según sea necesario:

var connections = projectClient.GetConnectionsClient();
var connection = connections.GetDefaultConnection(ConnectionType.AzureAISearch, withCredential: true).Value;

var properties = connection.Properties as ConnectionPropertiesApiKeyAuth;
if (properties == null) {
    throw new Exception("Invalid auth type, expected API key auth");
}

SearchClient searchClient = new SearchClient(
    new Uri(properties.Target),
    "products",
    new AzureKeyCredential(properties.Credentials.Key));

Para más información sobre el uso de Búsqueda de Azure AI, consulte la documentación de Búsqueda de Azure AI.

Servicio del agente de Azure AI

Azure AI Agent Service es un servicio totalmente administrado diseñado para permitir a los desarrolladores crear, implementar y escalar de forma segura agentes de inteligencia artificial extensibles y de alta calidad. Con un amplio ecosistema de modelos, herramientas y funcionalidades de OpenAI, Microsoft y proveedores de terceros, el servicio agente de Azure AI permite crear agentes para una amplia gama de casos de uso de IA generativa.

Para obtener acceso a los agentes, regístrese en la versión preliminar.

Evaluación

Puede usar el cliente del proyecto para conectarse fácilmente al servicio de evaluación de Azure AI y los modelos necesarios para ejecutar las evaluadores.

pip install azure-ai-evaluation

Con el parámetro project.scope, se puede crear una instancia de ViolenceEvaluator:

from azure.ai.evaluation import ViolenceEvaluator
from azure.identity import DefaultAzureCredential

# Initializing Violence Evaluator with project information
violence_eval = ViolenceEvaluator(
    azure_ai_project=project.scope,
    credential=DefaultAzureCredential())

# Running Violence Evaluator on single input row
violence_score = violence_eval(query="what's the capital of france", response="Paris")
print(violence_score)

NOTA: Para ejecutar evaluadores de violencia, el proyecto debe estar en Este de EE. UU. 2, Centro de Suecia, Centro-norte de EE. UU., Centro de Francia.

Para más información, consulte Evaluación mediante el SDK.

Un paquete de evaluación de Azure AI aún no está disponible para C#. Para obtener un ejemplo sobre cómo usar Prompty y Semantic Kernel para la evaluación, consulte el ejemplo contoso-chat-csharp-prompty.

Seguimiento

Para habilitar el seguimiento, asegúrese primero de que el proyecto tenga un recurso de Application Insights asociado. Vaya a la página Seguimiento del proyecto y siga las instrucciones para crear o asociar Application Insights.

Instale el paquete de Azure Monitor OpenTelemetry:

pip install azure-monitor-opentelemetry

Use el código siguiente para habilitar la instrumentación de Azure AI Inference SDK y el registro en el proyecto de IA:

# Enable instrumentation of AI packages (inference, agents, openai, langchain)
project.telemetry.enable()

# Log traces to the project's application insights resource
application_insights_connection_string = project.telemetry.get_connection_string()
if application_insights_connection_string:
    configure_azure_monitor(connection_string=application_insights_connection_string)

El seguimiento aún no está integrado en el paquete de proyectos. Para obtener instrucciones sobre cómo instrumentar y registrar seguimientos desde el paquete de Inferencia de Azure AI, consulte azure-sdk-for-dotnet.

A continuación se muestran algunos vínculos útiles a otros servicios y marcos que puede usar con el SDK de Azure AI Foundry.

Servicios de Azure AI

Bibliotecas cliente:

Bibliotecas de administración:

Marcos de trabajo

Azure Machine Learning

Flujo de avisos

Kernel semántico