Condividi tramite


Uso di immagini con un agente

Questa esercitazione illustra come usare le immagini con un agente, consentendo all'agente di analizzare e rispondere al contenuto dell'immagine.

Passaggio di immagini all'agente

È possibile inviare immagini a un agente creando un oggetto ChatMessage che include sia il testo che il contenuto dell'immagine. L'agente può quindi analizzare l'immagine e rispondere di conseguenza.

Creare prima di tutto un oggetto AIAgent in grado di analizzare le immagini.

AIAgent agent = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new DefaultAzureCredential())
    .GetChatClient("gpt-4o")
    .AsAIAgent(
        name: "VisionAgent",
        instructions: "You are a helpful agent that can analyze images");

Avviso

DefaultAzureCredential è utile per lo sviluppo, ma richiede un'attenta considerazione nell'ambiente di produzione. Nell'ambiente di produzione prendere in considerazione l'uso di credenziali specifiche ,ad esempio ManagedIdentityCredential, per evitare problemi di latenza, probe di credenziali indesiderate e potenziali rischi per la sicurezza dai meccanismi di fallback.

Creare quindi un oggetto ChatMessage contenente sia una richiesta di testo che un URL di immagine. Usare TextContent per il testo e UriContent per l'immagine.

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

Esegui l'agente con il messaggio. Puoi utilizzare lo streaming per ricevere la risposta mentre viene generata.

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

Questa operazione stamperà sulla console l'analisi dell'immagine effettuata dall'agente.

Passaggio di immagini all'agente

È possibile inviare immagini a un agente creando un oggetto Message che include sia il testo che il contenuto dell'immagine. L'agente può quindi analizzare l'immagine e rispondere di conseguenza.

Creare prima di tutto un agente in grado di analizzare le immagini.

import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential

agent = AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
    name="VisionAgent",
    instructions="You are a helpful agent that can analyze images"
)

Creare quindi un oggetto Message contenente sia una richiesta di testo che un URL di immagine. Usare Content.from_text() per il testo e Content.from_uri() per l'immagine.

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"
        )
    ]
)

È anche possibile caricare un'immagine dal file system locale usando 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"
        )
    ]
)

Esegui l'agente con il messaggio. Puoi utilizzare lo streaming per ricevere la risposta mentre viene generata.

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

asyncio.run(main())

Questa operazione stamperà sulla console l'analisi dell'immagine effettuata dall'agente.

Passaggi successivi