Aracılığıyla paylaş


Anlam Çekirdeği AzureAIAgent Keşfetmek

Önemli

Bu özellik deneysel aşamadadır. Bu aşamadaki özellikler hala geliştirme aşamasındadır ve önizleme veya sürüm adayı aşamasına geçmeden önce değiştirilebilir.

Bu tartışmayla ilgili ayrıntılı API belgelerine şu adreste ulaşabilirsiniz:

Güncelleştirilmiş AnlamSal Çekirdek Python API Belgeleri yakında kullanıma sunulacaktır.

Ajanlar şu anda Java'da kullanılamıyor.

AzureAIAgentnedir?

AzureAIAgent, sorunsuz araç tümleştirmesi ile gelişmiş konuşma özellikleri sağlamak için tasarlanmış, Semantik Çekirdek çerçevesi dahilinde özel bir ajandır. Araç çağrısını otomatikleştirerek el ile ayrıştırma ve çağırma gereksinimini ortadan kaldırır. Aracı ayrıca iş parçacıklarını kullanarak konuşma geçmişini güvenli bir şekilde yöneterek durumu koruma yükünü azaltır. Ayrıca AzureAIAgent, Bing, Azure AI Search, Azure İşlevleri ve OpenAPI aracılığıyla dosya alma, kod yürütme ve veri etkileşimi gibi çeşitli yerleşik araçları destekler.

AzureAIAgentkullanmak için Azure AI Foundry Projesi kullanılmalıdır. Aşağıdaki makaleler Azure AI Foundry'ye, proje oluşturma ve yapılandırmaya ve aracı hizmetine genel bir bakış sağlar:

Geliştirme Ortamınızı Hazırlama

AzureAIAgentgeliştirmeye devam etmek için geliştirme ortamınızı uygun paketlerle yapılandırın.

projenize Microsoft.SemanticKernel.Agents.AzureAI paketini ekleyin:

dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease

ayrıca Azure.Identity paketini de dahil etmek isteyebilirsiniz:

dotnet add package Azure.Identity

İsteğe bağlı Azure bağımlılıklarıyla semantic-kernel paketini yükleyin:

pip install semantic-kernel[azure]

Etmenler şu anda Java'da kullanılamıyor.

AI Proje İstemcisini Yapılandırma

Bir AzureAIAgent'ye erişmek için öncelikle belirli bir Foundry Projesi için yapılandırılmış bir proje istemcisi oluşturulması gerekir, genellikle bir bağlantı dizesi sağlayarak (Azure AI Foundry SDK'sı: Projelere Başlarken).

AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());

AgentsClient, AIProjectClient'den erişilebilir.

AgentsClient agentsClient = client.GetAgentsClient();

Kök dizindeki .env dosyasını değiştirip şunları ekleyin:

AZURE_AI_AGENT_PROJECT_CONNECTION_STRING = "<example-connection-string>"
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME = "<example-model-deployment-name>"

veya

AZURE_AI_AGENT_ENDPOINT = "<example-endpoint>"
AZURE_AI_AGENT_SUBSCRIPTION_ID = "<example-subscription-id>"
AZURE_AI_AGENT_RESOURCE_GROUP_NAME = "<example-resource-group-name>"
AZURE_AI_AGENT_PROJECT_NAME = "<example-project-name>"
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME = "<example-model-deployment-name>"

Yapılandırma tanımlandıktan sonra istemci oluşturulabilir:

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    # Your operational code here

Ajanlar şu anda Java'da kullanılamıyor.

AzureAIAgent oluşturma

AzureAIAgentoluşturmak için, Azure AI hizmeti aracılığıyla aracı projesini yapılandırıp başlatarak işe başlarsınız ve ardından Semantik Çekirdek ile tümleştirirsiniz:

AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();

// 1. Define an agent on the Azure AI agent service
Agent definition = agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>");

// 2. Create a Semantic Kernel agent based on the agent definition
AzureAIAgent agent = new(definition, agentsClient);
from azure.identity.aio import DefaultAzureCredential
from semantic_kernel.agents.azure_ai import AzureAIAgent, AzureAIAgentSettings

ai_agent_settings = AzureAIAgentSettings.create()

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    # 1. Define an agent on the Azure AI agent service
    agent_definition = await client.agents.create_agent(
        model=ai_agent_settings.model_deployment_name,
        name="<name>",
        instructions="<instructions>",
    )

    # 2. Create a Semantic Kernel agent based on the agent definition
    agent = AzureAIAgent(
        client=client,
        definition=agent_definition,
    )

Ajanlar şu anda Java'da kullanılamıyor.

AzureAIAgent ile etkileşim kurmak

AzureAIAgent ile etkileşim basittir. Ajan, konuşma geçmişini bir konu kullanarak otomatik olarak korur.

AgentThread thread = await agentsClient.CreateThreadAsync();
try
{
    ChatMessageContent message = new(AuthorRole.User, "<your user input>");
    await agent.AddChatMessageAsync(threadId, message);
    await foreach (ChatMessageContent response in agent.InvokeAsync(thread.Id))
    {
        Console.WriteLine(response.Content);
    }
}
finally
{
    await this.AgentsClient.DeleteThreadAsync(thread.Id);
    await this.AgentsClient.DeleteAgentAsync(agent.Id);
}
USER_INPUTS = ["Hello", "What's your name?"]

thread = await client.agents.create_thread()

try:
    for user_input in USER_INPUTS:
        await agent.add_chat_message(thread_id=thread.id, message=user_input)
        response = await agent.get_response(thread_id=thread.id)
        print(response)
finally:
    await client.agents.delete_thread(thread.id)

İsteğe bağlı olarak, aracı şu şekilde çağrılabilir:

for user_input in USER_INPUTS:
    await agent.add_chat_message(thread_id=thread.id, message=user_input)
    async for content in agent.invoke(thread_id=thread.id):
        print(content.content)

Bir aracı da akışlı yanıt üretebilir:

ChatMessageContent message = new(AuthorRole.User, "<your user input>");
await agent.AddChatMessageAsync(threadId, message);
await foreach (StreamingChatMessageContent response in agent.InvokeStreamingAsync(thread.Id))
{
    Console.Write(response.Content);
}
for user_input in USER_INPUTS:
    await agent.add_chat_message(thread_id=thread.id, message=user_input)
    async for content in agent.invoke_stream(thread_id=thread.id):
        print(content.content, end="", flush=True)

Temsilciler şu anda Java'da kullanılamıyor.

Eklentileri bir AzureAIAgent ile kullanma

Semantik Çekirdek, gelişmiş işlevsellik için özel eklentilerle bir AzureAIAgent genişletmeyi destekler:

Plugin plugin = KernelPluginFactory.CreateFromType<YourPlugin>();
AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();

Agent definition = agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>");

AzureAIAgent agent = new(definition, agentsClient, plugins: [plugin]);
from semantic_kernel.functions import kernel_function

class SamplePlugin:
    @kernel_function(description="Provides sample data.")
    def get_data(self) -> str:
        return "Sample data"

ai_agent_settings = AzureAIAgentSettings.create()

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
        )

        agent = AzureAIAgent(
            client=client,
            definition=agent_definition,
            plugins=[SamplePlugin()]
        )

Ajanlar şu anda Java'da kullanılamıyor.

Gelişmiş Özellikler

AzureAIAgent aşağıdakiler gibi gelişmiş araçlardan yararlanabilir:

Kod Yorumlayıcı

Kod Yorumlayıcı, aracıların korumalı bir yürütme ortamında (Azure AI Aracısı Hizmet Kodu Yorumlayıcısı) Python kodu yazmasına ve çalıştırmasına olanak tanır.

AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();

Agent definition = agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [new CodeInterpreterToolDefinition()],
    toolResources:
        new()
        {
            CodeInterpreter = new()
            {
                FileIds = { ... },
            }
        }));

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import CodeInterpreterTool

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        code_interpreter = CodeInterpreterTool()
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            tools=code_interpreter.definitions,
            tool_resources=code_interpreter.resources,
        )

Ajanlar şu anda Java'da kullanılamıyor.

Dosya arama, aracıları modelinin dışından gelen bilgiyle destekler (Azure AI Aracısı Hizmeti Dosya Arama Aracı).

AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();

Agent definition = agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [new FileSearchToolDefinition()],
    toolResources:
        new()
        {
            FileSearch = new()
            {
                VectorStoreIds = { ... },
            }
        }));

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import FileSearchTool

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        file_search = FileSearchTool(vector_store_ids=[vector_store.id])
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            tools=file_search.definitions,
            tool_resources=file_search.resources,
        )

Ajanlar şu anda Java'da kullanılamıyor.

OpenAPI Tümleştirmesi

Aracınızı bir dış API'ye bağlar (OpenAPI Belirtilen Araçlarile Azure AI Aracı Hizmeti'ni kullanma ).

AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();

string apiJsonSpecification = ...; // An Open API JSON specification

Agent definition = agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [
        new OpenApiToolDefinition(
            "<api name>", 
            "<api description>", 
            BinaryData.FromString(apiJsonSpecification), 
            new OpenApiAnonymousAuthDetails())
    ],
);

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import OpenApiTool, OpenApiAnonymousAuthDetails

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        openapi_spec_file_path = "sample/filepath/..."
        with open(os.path.join(openapi_spec_file_path, "spec_one.json")) as file_one:
            openapi_spec_one = json.loads(file_one.read())
        with open(os.path.join(openapi_spec_file_path, "spec_two.json")) as file_two:
            openapi_spec_two = json.loads(file_two.read())

        # Note that connection or managed identity auth setup requires additional setup in Azure
        auth = OpenApiAnonymousAuthDetails()
        openapi_tool_one = OpenApiTool(
            name="<name>",
            spec=openapi_spec_one,
            description="<description>",
            auth=auth,
        )
        openapi_tool_two = OpenApiTool(
            name="<name>",
            spec=openapi_spec_two,
            description="<description>",
            auth=auth,
        )

        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            tools=openapi_tool_one.definitions + openapi_tool_two.definitions,
        )

Temsilciler şu anda Java'da kullanılamıyor.

AzureAI Arama Tümleştirmesi

Aracınızla mevcut bir Azure AI Search dizinini kullanma (Var olan yapay zeka arama dizinini kullanma).

AIProjectClient client = AzureAIAgent.CreateAzureAIClient("<your connection-string>", new AzureCliCredential());
AgentsClient agentsClient = client.GetAgentsClient();

ConnectionsClient cxnClient = client.GetConnectionsClient();
ListConnectionsResponse searchConnections = await cxnClient.GetConnectionsAsync(AzureAIP.ConnectionType.AzureAISearch);
ConnectionResponse searchConnection = searchConnections.Value[0];

Agent definition = agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [new AzureAIP.AzureAISearchToolDefinition()],
    toolResources: new()
    {
        AzureAISearch = new()
        {
            IndexList = { new AzureAIP.IndexResource(searchConnection.Id, "<your index name>") }
        }
    });

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.projects.models import AzureAISearchTool, ConnectionType

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        conn_list = await client.connections.list()

        ai_search_conn_id = ""
        for conn in conn_list:
            if conn.connection_type == ConnectionType.AZURE_AI_SEARCH:
                ai_search_conn_id = conn.id
                break

        ai_search = AzureAISearchTool(
            index_connection_id=ai_search_conn_id, 
            index_name=AZURE_AI_SEARCH_INDEX_NAME,
        )

        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            instructions="Answer questions using your index.",
            tools=ai_search.definitions,
            tool_resources=ai_search.resources,
            headers={"x-ms-enable-preview": "true"},
        )

Ajanlar şu anda Java'da kullanılamıyor.

Mevcut AzureAIAgent'ı Geri Getirme

Mevcut bir temsilci, yardımcı kimliği belirtilerek alınabilir ve yeniden kullanılabilir.

Agent definition = agentsClient.GetAgentAsync("<your agent id>");
AzureAIAgent agent = new(definition, agentsClient);
agent_definition = await client.agents.get_agent(assistant_id="your-agent-id")
agent = AzureAIAgent(client=client, definition=agent_definition)

Aracılar şu anda Java'da kullanılamıyor.

Bir AzureAIAgent'ı silme

Ajanlar ve ilişkili iş parçacıkları artık gerekli olmadığında silinebilir.

await agentsClient.DeleteThreadAsync(thread.Id);
await agentsClient.DeleteAgentAsync(agent.Id);
await client.agents.delete_thread(thread.id)
await client.agents.delete_agent(agent.id)

Vektör deposu veya dosyalarla çalışıyorsanız, bunlar da silinebilir:

await agentsClient.DeleteVectorStoreAsync("<your store id>");
await agentsClient.DeleteFileAsync("<your file id>");
await client.agents.delete_file(file_id=file.id)
await client.agents.delete_vector_store(vector_store_id=vector_store.id)

Aracılar şu anda Java'da kullanılamıyor.

dosya arama aracı hakkında daha fazla bilgi Azure AI Agent Service dosya arama aracı makalesinde açıklanmıştır.

How-To

AzureAIAgentkullanmanın pratik örnekleri için GitHub'da kod örneklerimize bakın:

Ajanlar şu anda Java'da kullanılamıyor.

Aracı Sohbetinde Aracı İşbirliğini