Aracılığıyla paylaş


Agent Framework ile aracı oluşturma ve çalıştırma

Bu öğreticide, Azure OpenAI Sohbet Tamamlama hizmetini temel alarak Agent Framework ile aracı oluşturma ve çalıştırma adımları gösterilmektedir.

Önemli

Agent Framework birçok farklı aracı türünü destekler. Bu öğreticide Sohbet Tamamlama hizmetini temel alan bir aracı kullanılır, ancak diğer tüm aracı türleri aynı şekilde çalıştırılır. Diğer aracı türleri ve bunların nasıl oluşturulmuş olduğu hakkında daha fazla bilgi için Bkz. Agent Framework kullanıcı kılavuzu.

Önkoşullar

Başlamadan önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

Uyarı

Microsoft Agent Framework, .NET'in etkin olarak desteklenen tüm sürümleriyle desteklenir. Bu örneğin amaçları doğrultusunda .NET 8 SDK'sını veya sonraki bir sürümü öneririz.

Önemli

Bu öğreticide Sohbet Tamamlama hizmeti için Azure OpenAI kullanılır, ancak uygulama sağlayan herhangi bir IChatClient çıkarım hizmetini kullanabilirsiniz.

NuGet paketlerini yükleme

Microsoft Agent Framework'ü Azure OpenAI ile kullanmak için aşağıdaki NuGet paketlerini yüklemeniz gerekir:

dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease

Aracıyı oluşturma

  • İlk olarak, Azure OpenAI uç noktasını sağlayarak ve Önkoşullar adımında Azure CLI ile kimlik doğrulaması yaparken kullandığınız oturum açma bilgilerini kullanarak Azure OpenAI için bir istemci oluşturun.
  • Ardından, kullanılacak model dağıtımını belirttiğiniz sohbet tamamlama servisiyle iletişim kurmak için bir sohbet istemcisi edinin. Önkoşullar adımında oluşturduğunuz dağıtımlardan birini kullanın.
  • Son olarak, aracı için yönergeler ve bir ad sağlayarak aracıyı oluşturun.
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using OpenAI;

AIAgent agent = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new AzureCliCredential())
        .GetChatClient("gpt-4o-mini")
        .CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Ajanı çalıştırma

Aracıyı çalıştırmak için aracı örneğinde `RunAsync` yöntemini kullanıcı girdisiyle çağırın. Aracı bir AgentRunResponse nesne döndürür ve bu yanıt nesnesinde .ToString() veya .Text çağrılması, aracıdan gelen metin sonucunu sağlar.

Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));

Örnek çıkış:

Why did the pirate go to school?

Because he wanted to improve his "arrr-ticulation"! 🏴‍☠️

Ajana akış özelliğiyle çalıştırma

Aracıyı akışla çalıştırmak için, aracı örneğinde RunStreamingAsync yöntemini kullanıcı girişi sağlayarak çağırın. Aracı, bir akış AgentRunResponseUpdate nesnesi döndürecek ve her güncelleme nesnesi üzerinde .ToString() veya .Text çağrısı yapıldığında, metin sonucunun bu güncellemede yer alan bölümünü sağlayacaktır.

await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
    Console.WriteLine(update);
}

Örnek çıkış:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Aracıyı ChatMessages ile çalıştırma

Basit bir dize yerine ChatMessage ve RunAsync yöntemlerine bir veya daha fazla RunStreamingAsync nesne de sağlayabilirsiniz.

Tek bir kullanıcı iletisi içeren bir örnek aşağıda verilmiştir:

ChatMessage message = new(ChatRole.User, [
    new TextContent("Tell me a joke about this image?"),
    new UriContent("https://upload.wikimedia.org/wikipedia/commons/1/11/Joseph_Grimaldi.jpg", "image/jpeg")
]);

Console.WriteLine(await agent.RunAsync(message));

Örnek çıkış:

Why did the clown bring a bottle of sparkling water to the show?

Because he wanted to make a splash!

Sistem ve kullanıcı iletisi içeren bir örnek aşağıda verilmiştir:

ChatMessage systemMessage = new(
    ChatRole.System,
    """
    If the user asks you to tell a joke, refuse to do so, explaining that you are not a clown.
    Offer the user an interesting fact instead.
    """);
ChatMessage userMessage = new(ChatRole.User, "Tell me a joke about a pirate.");

Console.WriteLine(await agent.RunAsync([systemMessage, userMessage]));

Örnek çıkış:

I'm not a clown, but I can share an interesting fact! Did you know that pirates often revised the Jolly Roger flag? Depending on the pirate captain, it could feature different symbols like skulls, bones, or hourglasses, each representing their unique approach to piracy.

Bu öğreticide, Azure OpenAI Sohbet Tamamlama hizmetini temel alarak Agent Framework ile aracı oluşturma ve çalıştırma adımları gösterilmektedir.

Önemli

Agent Framework birçok farklı aracı türünü destekler. Bu öğreticide Sohbet Tamamlama hizmetini temel alan bir aracı kullanılır, ancak diğer tüm aracı türleri aynı şekilde çalıştırılır. Diğer aracı türleri ve bunların nasıl oluşturulmuş olduğu hakkında daha fazla bilgi için Bkz. Agent Framework kullanıcı kılavuzu.

Önkoşullar

Başlamadan önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

Önemli

Bu öğreticide Sohbet Tamamlama hizmeti için Azure OpenAI kullanılır, ancak Agent Framework'ün sohbet istemci protokolüyle uyumlu herhangi bir çıkarım hizmetini kullanabilirsiniz.

Python paketlerini yükleme

Microsoft Agent Framework'ü Azure OpenAI ile kullanmak için aşağıdaki Python paketlerini yüklemeniz gerekir:

pip install agent-framework --pre

Aracıyı oluşturma

  • İlk olarak, Azure OpenAI ile iletişim kurmak için bir sohbet istemcisi oluşturun ve Önkoşullar adımında Azure CLI ile kimlik doğrulaması yaparken kullandığınız oturum açma bilgilerini kullanın.
  • Ardından aracı için yönergeler ve bir ad sağlayarak aracıyı oluşturun.
import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential

agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent(
    instructions="You are good at telling jokes.",
    name="Joker"
)

Ajanı çalıştırma

Aracıyı çalıştırmak için aracı örneğinde `run` yöntemini kullanıcı girdisiyle çağırın. Aracı bir yanıt nesnesi döndürür ve özelliğine .text erişmek aracıdan gelen metin sonucunu sağlar.

async def main():
    result = await agent.run("Tell me a joke about a pirate.")
    print(result.text)

asyncio.run(main())

Ajana akış özelliğiyle çalıştırma

Aracıyı akışla çalıştırmak için, aracı örneğinde run_stream yöntemini kullanıcı girişi sağlayarak çağırın. Aracı, güncelleştirme nesnelerinin listesini akışa alır ve her güncelleştirme nesnesindeki .text özelliğine erişmek, metin sonucunun bu güncelleştirmede yer alan bölümünü sağlar.

async def main():
    async for update in agent.run_stream("Tell me a joke about a pirate."):
        if update.text:
            print(update.text, end="", flush=True)
    print()  # New line after streaming is complete

asyncio.run(main())

Aracıyı ChatMessage ile çalıştırma

Basit bir dize yerine ChatMessage ve run yöntemlerine bir veya daha fazla run_stream nesne de sağlayabilirsiniz.

from agent_framework import ChatMessage, TextContent, UriContent, Role

message = ChatMessage(
    role=Role.USER,
    contents=[
        TextContent(text="Tell me a joke about this image?"),
        UriContent(uri="https://samplesite.org/clown.jpg", media_type="image/jpeg")
    ]
)

async def main():
    result = await agent.run(message)
    print(result.text)

asyncio.run(main())

Sonraki Adımlar