大数跨境

第四篇:识别图片

第四篇:识别图片 dotNET跨平台
2026-02-13
10
导读:首先我们用GPT来读图片,理解图片。1、从文件里读配置azure_key.txt├─ 第 1 行:deplo

首先我们用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);}

图片为:

运行结果:














【声明】内容源于网络
0
0
dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
内容 1307
粉丝 0
dotNET跨平台 专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
总阅读25.2k
粉丝0
内容1.3k