Partilhar via


O SDK do Azure AI Foundry

O SDK do Azure AI Foundry é uma cadeia de ferramentas abrangente projetada para simplificar o desenvolvimento de aplicativos de IA no Azure. Ele permite que os desenvolvedores:

  • Aceda a modelos populares de vários fornecedores de modelos através de uma única interface
  • Combine facilmente modelos, dados e serviços de IA para criar aplicativos baseados em IA
  • Avaliar, depurar e melhorar a qualidade e a segurança dos aplicativos em ambientes de desenvolvimento, teste e produção

O SDK do Azure AI Foundry é um conjunto de pacotes e serviços projetados para trabalhar juntos. Você pode usar a biblioteca de cliente do Azure AI Projects para usar facilmente vários serviços por meio de um único cliente de projeto e cadeia de conexão. Você também pode usar serviços e SDKs por conta própria e conectar-se diretamente aos seus serviços.

Se você quiser entrar e começar a criar um aplicativo, confira:

Introdução ao Project

A melhor maneira de começar a usar o SDK do Azure AI Foundry é usando um projeto. Os projetos de IA conectam diferentes dados, ativos e serviços de que você precisa para criar aplicativos de IA. O cliente do projeto AI permite que você acesse facilmente esses componentes do projeto a partir do seu código usando uma única cadeia de conexão.

Primeiro, siga os passos para criar um projeto de IA, se ainda não tiver um.

Entre com a CLI do Azure usando a mesma conta que você usa para acessar seu projeto de IA:

az login

Instale a biblioteca de cliente de projetos do Azure AI:

pip install azure-ai-projects azure-identity

Crie um cliente de projeto no 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

Adicionar usando instruções:

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

Crie um cliente de projeto no código:

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

Copie a cadeia de conexão Project da página Visão geral do projeto e atualize o valor da cadeia de conexões acima.

Depois de criar o cliente do projeto, você pode usar o cliente para os recursos nas seções a seguir.

Não deixe de conferir a referência e as amostras.

Não deixe de conferir a referência e as amostras.

Azure OpenAI Service

O Serviço OpenAI do Azure fornece acesso aos modelos da OpenAI, incluindo as séries de modelos GPT-4o, GPT-4o mini, GPT-4, GPT-4 Turbo with Vision, DALLE-3, Whisper e Embeddings com as capacidades de residência de dados, escalabilidade, segurança e empresariais do Azure.

Se você tiver um código que usa o SDK do OpenAI, poderá direcionar facilmente seu código para usar o serviço OpenAI do Azure. Primeiro, instale o OpenAI SDK:

pip install openai

Se você tiver código existente que usa o SDK do OpenAI, poderá usar o cliente do projeto para criar um AzureOpenAI cliente que use a conexão do Azure OpenAI do seu projeto:

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

Adicionar usando instruções:

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

Se você tiver código existente que usa o SDK do OpenAI, poderá usar o cliente do projeto para criar um AzureOpenAI cliente que use a conexão do Azure OpenAI do seu projeto:

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}");

Se você já estiver usando o SDK do Azure OpenAI diretamente no Serviço OpenAI do Azure, o projeto fornece uma maneira conveniente de usar os recursos do Serviço OpenAI do Azure junto com o restante dos recursos do Azure AI Foundry.

Serviço de inferência de modelo de IA do Azure

O serviço de inferência de modelo de IA do Azure oferece acesso a modelos poderosos de provedores líderes como OpenAI, Microsoft, Meta e muito mais. Esses modelos suportam tarefas como geração de conteúdo, sumarização e geração de código.

Para usar o serviço de inferência de modelo, primeiro verifique se seu projeto tem uma conexão de Serviços de IA (no centro de gerenciamento).

Instale a biblioteca do azure-ai-inference cliente:

pip install azure-ai-inference

Você pode usar o cliente do projeto para obter um configurado e autenticado ChatCompletionsClient ou EmbeddingsClient:

# 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

Adicionar usando instruções:

using Azure.AI.Inference;

Você pode usar o cliente do projeto para obter um configurado e autenticado ChatCompletionsClient ou EmbeddingsClient:

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);

Você pode alterar o nome do modelo para qualquer modelo implantado no serviço de inferência ou no serviço Azure OpenAI.

Para saber mais sobre como usar o cliente de inferência de IA do Azure, confira a referência de inferência de modelo de IA do Azure.

Modelos de prompt

O cliente de inferência suporta a criação de mensagens de prompt a partir de modelos. O modelo permite gerar prompts dinamicamente usando entradas que estão disponíveis em tempo de execução.

Para usar modelos de prompt, instale o azure-ai-inference pacote:

pip install azure-ai-inference

Você pode renderizar um modelo de prompt a partir de uma cadeia de caracteres embutida:

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

O espaço em branco à esquerda é cortado automaticamente das cadeias de caracteres de entrada.

Esse código gera mensagens que você pode passar para uma chamada de conclusão 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'}
]

Você também pode carregar prompts de um Prompty arquivo, permitindo que você também carregue o nome do modelo e os parâmetros do .prompty arquivo:

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,
)

Se você tiver um recurso do Azure AI Search conectado ao seu projeto, também poderá usar o cliente do projeto para criar um cliente do Azure AI Search usando a conexão do projeto.

Instale a biblioteca de cliente do Azure AI Search:

pip install azure-search-documents

Instancie o cliente de pesquisa e/ou índice de pesquisa conforme desejado:

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

Adicionar usando instruções:

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

Instancie o cliente de pesquisa e/ou índice de pesquisa conforme desejado:

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 saber mais sobre como usar o Azure AI Search, confira a documentação do Azure AI Search.

Serviço Azure AI Agent

O Azure AI Agent Service é um serviço totalmente gerenciado projetado para capacitar os desenvolvedores a criar, implantar e dimensionar com segurança agentes de IA extensíveis e de alta qualidade. Usando um extenso ecossistema de modelos, ferramentas e recursos da OpenAI, Microsoft e provedores de terceiros, o Azure AI Agent Service permite a criação de agentes para uma ampla gama de casos de uso de IA generativa.

Para ter acesso aos agentes, inscreva-se na visualização.

Avaliação

Você pode usar o cliente de projeto para se conectar facilmente ao serviço de avaliação de IA do Azure e aos modelos necessários para executar seus avaliadores.

pip install azure-ai-evaluation

Usando o project.scope parâmetro, podemos instanciar um 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 executar avaliadores de violência, seu projeto precisa estar em East US 2, Sweden Central, US North Central, France Central.

Para saber mais, confira Avaliação usando o SDK.

Um pacote de avaliação da IA do Azure ainda não está disponível para C#. Para obter um exemplo sobre como usar o Prompty e o Semantic Kernel para avaliação, consulte o exemplo contoso-chat-csharp-prompty .

Rastreio

Para habilitar o rastreamento, primeiro verifique se seu projeto tem um recurso anexado do Application Insights. Vá para a página Rastreamento do seu projeto e siga as instruções para criar ou anexar o Application Insights.

Instale o pacote OpenTelemetry do Azure Monitor:

pip install azure-monitor-opentelemetry

Use o código a seguir para habilitar a instrumentação do SDK do Azure AI Inference e o registro em log em seu projeto de IA:

from azure.monitor.opentelemetry import configure_azure_monitor

# 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)

O rastreio ainda não está integrado no pacote de projetos. Para obter instruções sobre como instrumentar e registrar rastreamentos do pacote Azure AI Inferencing, consulte azure-sdk-for-dotnet.

Abaixo estão alguns links úteis para outros serviços e estruturas que você pode usar com o SDK do Azure AI Foundry.

Serviços de IA do Azure

Bibliotecas cliente:

Bibliotecas de gestão:

Frameworks

Azure Machine Learning

Fluxo imediato

Kernel Semântico