استخدام الصور مع وكيل

يوضح لك هذا البرنامج التعليمي كيفية استخدام الصور مع عامل، ما يسمح للعامل بتحليل محتوى الصورة والاستجابة له.

تمرير الصور إلى العامل

يمكنك إرسال الصور إلى عامل عن طريق إنشاء ChatMessage يتضمن محتوى كل من النص والصورة. يمكن للعامل بعد ذلك تحليل الصورة والاستجابة وفقا لذلك.

أولا، قم بإنشاء AIAgent قادر على تحليل الصور.

AIAgent agent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
    .AsAIAgent(
        model: "gpt-4o",
        name: "VisionAgent",
        instructions: "You are a helpful agent that can analyze images");

تحذير

DefaultAzureCredential مناسب للتنمية ولكنه يتطلب دراسة متأنية في الإنتاج. في الإنتاج، ضع في اعتبارك استخدام بيانات اعتماد محددة (على سبيل المثال، ManagedIdentityCredential) لتجنب مشكلات زمن الانتقال، وبحث بيانات الاعتماد غير المقصودة، والمخاطر الأمنية المحتملة من الآليات الاحتياطية.

بعد ذلك، قم بإنشاء ChatMessage يحتوي على كل من مطالبة نص وعنوان URL للصورة. استخدم TextContent للنص وللصورة UriContent .

ChatMessage message = new(ChatRole.User, [
    new TextContent("What do you see in this image?"),
    new UriContent("https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg", "image/jpeg")
]);

تشغيل العامل بالرسالة. يمكنك استخدام الدفق لتلقي الاستجابة أثناء إنشائها.

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

سيؤدي ذلك إلى طباعة تحليل العامل للصورة إلى وحدة التحكم.

تمرير الصور إلى العامل

يمكنك إرسال الصور إلى عامل عن طريق إنشاء Message يتضمن محتوى كل من النص والصورة. يمكن للعامل بعد ذلك تحليل الصورة والاستجابة وفقا لذلك.

أولا، إنشاء عامل قادر على تحليل الصور.

import asyncio
import os
from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential

agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    name="VisionAgent",
    instructions="You are a helpful agent that can analyze images"
)

بعد ذلك، قم بإنشاء Message يحتوي على كل من مطالبة نص وعنوان URL للصورة. استخدم Content.from_text() للنص وللصورة Content.from_uri() .

from agent_framework import Message, Content

message = Message(
    role="user",
    contents=[
        Content.from_text(text="What do you see in this image?"),
        Content.from_uri(
            uri="https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
            media_type="image/jpeg"
        )
    ]
)

يمكنك أيضا تحميل صورة من نظام الملفات المحلي باستخدام Content.from_data():

from agent_framework import Message, Content

# Load image from local file
with open("path/to/your/image.jpg", "rb") as f:
    image_bytes = f.read()

message = Message(
    role="user",
    contents=[
        Content.from_text(text="What do you see in this image?"),
        Content.from_data(
            data=image_bytes,
            media_type="image/jpeg"
        )
    ]
)

تشغيل العامل بالرسالة. يمكنك استخدام الدفق لتلقي الاستجابة أثناء إنشائها.

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

asyncio.run(main())

سيؤدي ذلك إلى طباعة تحليل العامل للصورة إلى وحدة التحكم.

تمرير الصور إلى العامل

يمكنك إرسال الصور إلى عامل عن طريق إنشاء message يتضمن محتوى كل من النص والصورة. يمكن للعامل بعد ذلك تحليل الصورة والاستجابة وفقا لذلك.

أولا، إنشاء عامل قادر على تحليل الصور.

import (
    "context"
    "fmt"
    "os"

    "github.com/microsoft/agent-framework-go/agent"
    "github.com/microsoft/agent-framework-go/provider/foundryprovider"
    "github.com/microsoft/agent-framework-go/message"

    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)

token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
    panic(err)
}

a := foundryprovider.NewAgent(
    os.Getenv("FOUNDRY_PROJECT_ENDPOINT"),
    token,
    foundryprovider.ModelDeployment(os.Getenv("FOUNDRY_MODEL")),
    foundryprovider.AgentConfig{
        Instructions: "You are a helpful agent that can analyze images",
        Config: agent.Config{
            Name: "VisionAgent",
        },
    },
)

تحذير

azidentity.NewDefaultAzureCredential مناسب للتنمية ولكنه يتطلب دراسة متأنية في الإنتاج. في الإنتاج، ضع في اعتبارك استخدام بيانات اعتماد معينة، مثل azidentity.NewManagedIdentityCredential، لتجنب مشكلات زمن الانتقال، وبحث بيانات الاعتماد غير المقصودة، والمخاطر الأمنية المحتملة من الآليات الاحتياطية.

بعد ذلك، قم بإنشاء رسالة تحتوي على كل من مطالبة نصية وعنوان URL للصورة. استخدم message.TextContent للنص وللصورة message.URIContent .

msg := message.New(
    &message.TextContent{Text: "What do you see in this image?"},
    &message.URIContent{
        URI:       "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
        MediaType: "image/jpeg",
    },
)

يمكنك أيضا تحميل صورة من نظام الملفات المحلي باستخدام message.DataContent:

import "encoding/base64"

imageBytes, err := os.ReadFile("path/to/your/image.jpg")
if err != nil {
    panic(err)
}

msg := message.New(
    &message.TextContent{Text: "What do you see in this image?"},
    &message.DataContent{
        Data:      base64.StdEncoding.EncodeToString(imageBytes),
        MediaType: "image/jpeg",
    },
)

تشغيل العامل بالرسالة. يمكنك استخدام الدفق لتلقي الاستجابة أثناء إنشائها.

ctx := context.Background()
resp, err := a.RunMessage(ctx, msg).Collect()
fmt.Println(resp.Text(), err)

سيؤدي ذلك إلى طباعة تحليل العامل للصورة إلى وحدة التحكم.

الخطوات التالية