本教程介绍如何将图像与代理配合使用,使代理能够分析和响应图像内容。
先决条件
有关先决条件和安装 NuGet 包,请参阅本教程中的 “创建并运行简单代理 ”步骤。
将映像传递到代理
可以通过创建包含文本和图像内容的 ChatMessage 来将图像发送给代理。 然后,代理可以分析图像并相应地做出响应。
首先,创建能够分析图像的一个 AIAgent 。
AIAgent agent = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential())
.GetChatClient("gpt-4o")
.CreateAIAgent(
name: "VisionAgent",
instructions: "You are a helpful agent that can analyze images");
接下来,创建一个包含文本提示和图像 URL 的 ChatMessage。 使用 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));
这会将代理对图像的分析输出到控制台。
将映像传递到代理
可以通过创建包含文本和图像内容的 ChatMessage 来将图像发送给代理。 然后,代理可以分析图像并相应地做出响应。
首先,创建能够分析图像的代理。
import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent(
name="VisionAgent",
instructions="You are a helpful agent that can analyze images"
)
接下来,创建一个包含文本提示和图像 URL 的 ChatMessage。 使用 TextContent 代表文本,UriContent 代表图像。
from agent_framework import ChatMessage, TextContent, UriContent, Role
message = ChatMessage(
role=Role.USER,
contents=[
TextContent(text="What do you see in this image?"),
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",
media_type="image/jpeg"
)
]
)
还可以使用以下 DataContent方法从本地文件系统加载映像:
from agent_framework import ChatMessage, TextContent, DataContent, Role
# Load image from local file
with open("path/to/your/image.jpg", "rb") as f:
image_bytes = f.read()
message = ChatMessage(
role=Role.USER,
contents=[
TextContent(text="What do you see in this image?"),
DataContent(
data=image_bytes,
media_type="image/jpeg"
)
]
)
使用消息运行代理。 可以在生成响应时使用流式处理接收响应。
async def main():
result = await agent.run(message)
print(result.text)
asyncio.run(main())
这会将代理对图像的分析输出到控制台。