首先我们用GPT来读图片,理解图片。
1、从文件里读配置
azure_key.txt├─ 第 1 行:deploymentName├─ 第 2 行:endpoint├─ 第 3 行:api key
2、创建 Azure OpenAI 客户端
这里用的是 Azure.AI.OpenAI + OpenAI.Chat 这一套新的 SDK 组合。
重点在这句:
new AzureOpenAIClient(new Uri(endpoint), credential)
它相当于告诉程序:“我要连的是 Azure 上你自己部署的 OpenAI 服务,不是官方公共 API。”
3、把 ChatClient 变成一个 AI Agent
这一句是灵魂所在
.AsAIAgent(name: "VisionAgent",instructions: "You are a helpful agent that can analyze images");
这一步做了几件事:
给 AI 起了个名字:VisionAgent
给它一个长期有效的人设 / 系统指令
告诉它:你主要负责看图、分析图片
这比每次手写 system prompt 要干净很多。
4、构造一个“文字 + 图片”的用户消息
这里用的是 Microsoft.Extensions.AI.ChatMessage,
而且一条消息里可以塞多个内容块:
TextContent:文字(中文提问)
DataContent:图片的二进制数据
也就是说,AI 一次就能同时“看到你说了什么 + 给了什么图”。
5、用 Session 跑一个可持续对话
var session = await agent.CreateSessionAsync();
这一步的意思是:“我们不是一次性问答,而是开启一个会话上下文。”
6、用流式方式拿结果,边生成边输出
await foreach (var update in agent.RunStreamingAsync(message, session)){Console.Write(update);}
整体代码:
using Azure.AI.OpenAI;using Microsoft.Extensions.AI;using OpenAI.Chat;using System.ClientModel;using ChatMessage = Microsoft.Extensions.AI.ChatMessage;var arr = File.ReadAllLines("C:/gpt/azure_key.txt");var endpoint = arr[1];var deploymentName = arr[0];var credential = new ApiKeyCredential(arr[2]);var agent = new AzureOpenAIClient(new Uri(endpoint), credential).GetChatClient(deploymentName).AsAIAgent(name: "VisionAgent",instructions: "You are a helpful agent that can analyze images");ChatMessage message = new(ChatRole.User, [new TextContent("解释一下这个图片"),new DataContent(File.ReadAllBytes("test.png"),"image/jpeg")]);var session = await agent.CreateSessionAsync();await foreach (var update in agent.RunStreamingAsync(message, session)){Console.Write(update);}
运行结果:
下面用Ollama+deepseek-ocr模型来通过图片识别文字。
整体代码:
using Azure.AI.OpenAI;using Microsoft.Extensions.AI;using OllamaSharp;using OpenAI.Chat;using System.ClientModel;using ChatMessage = Microsoft.Extensions.AI.ChatMessage;var ollamaEndpoint = "http://localhost:11434";var ollamaModel = "deepseek-ocr:latest";var agent = new OllamaApiClient(ollamaEndpoint, ollamaModel).AsAIAgent(name: "VisionAgent",instructions: "You are a helpful agent that can analyze images");ChatMessage message = new(ChatRole.User, [new TextContent("图片中的文字内容是什么?"),new DataContent(File.ReadAllBytes("shufa.jpg"),"image/jpeg"));var session = await agent.CreateSessionAsync();await foreach (var update in agent.RunStreamingAsync(message, session)){Console.Write(update);}
图片为:
运行结果:

