C# net deepseek RAG AI开发 全流程 介绍_c# 向量处理 deepseek-CSDN博客
视觉多模态大模型 通义千问2.5-VL-72B
AI大模型能看懂图 看懂了后能干啥呢
如看懂图 让Agent 写代码 ,改作业,识别屏幕 标注等等。。。
据说是目前最好的免费图片识别框架 通义千文 免费开源大模型

食谱
食谱 | 描述 | 打开 |
---|---|---|
普遍认可 | 不仅可以识别动物、植物、人和景点,还可以识别汽车和商品等各种物体。 | |
强大的文档解析能力 | 文档的解析已经达到了更高的水平,不仅包括文本,还包括布局位置信息和我们的 Qwen HTML 格式。 | |
跨格式的精确对象接地 | 它使用绝对位置坐标,同时支持方框和点,允许定位和标记任务的多样化组合。 | |
通用 OCR 和关键信息提取 | 在自然场景和多种语言下提供更强的文本识别能力,支持多样化的关键信息提取需求。 | |
视频理解 | 更好的视频 OCR、长视频理解和视频接地。 | |
移动代理 | 定位并思考手机控制。 | |
计算机使用代理 | 定位和思考控制计算机和 Web。 |



文本+视图 理解
cs
public async Task<IEnumerable<FaceItem>?> GetAnnotationAsync(string imagePath)
{
var bytes = await File.ReadAllBytesAsync(imagePath);
var chatHistory = new ChatHistory();
chatHistory.AddSystemMessage("作为一名图像检测专家,你擅长精确的图像对象检测,以纯文本格式'x1,y1,x2,y2'提供坐标。");
chatHistory.AddUserMessage([
new TextContent("框出每一个人脸的位置(不包括身体),以json格式输出所有的坐标,只输出纯json字符,不要夹杂其它字符,并且标注性别(男/女)。"),
new ImageContent(bytes, "image/jpeg")
]
);
var reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);
if (reply.Content is null) return [];
var jsonStr = Regex.Replace(reply.Content, @"^\s*```json|```\s*$", "", RegexOptions.Multiline).Trim();
Console.WriteLine(jsonStr);
return reply.Content is null ? [] : JsonSerializer.Deserialize<IEnumerable<FaceItem>>(jsonStr);
}

结果
cs
[
{"bbox_2d": [608, 79, 654, 130], "label": "女"},
{"bbox_2d": [700, 74, 748, 130], "label": "女"},
{"bbox_2d": [837, 74, 876, 128], "label": "女"},
{"bbox_2d": [916, 68, 956, 128], "label": "男"},
{"bbox_2d": [1110, 162, 1174, 224], "label": "女"},
{"bbox_2d": [707, 338, 813, 438], "label": "女"},
{"bbox_2d": [918, 424, 988, 512], "label": "男"},
{"bbox_2d": [1002, 398, 1072, 512], "label": "女"},
{"bbox_2d": [1080, 382, 1140, 464], "label": "女"},
{"bbox_2d": [1116, 362, 1205, 512], "label": "女"},
{"bbox_2d": [590, 578, 678, 672], "label": "女"},
{"bbox_2d": [721, 584, 774, 646], "label": "女"},
{"bbox_2d": [797, 622, 874, 672], "label": "女"}
]
代码
cs
public class FaceCheckAgentWorker(FaceCheckAgent faceCheckAgent) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var imagePath = "Images/human1.jpg";
var faceItems = await faceCheckAgent.GetAnnotationAsync(imagePath);
if (faceItems == null) return;
using var image = Image.FromFile(imagePath);
using var bitmap = new Bitmap(image);
foreach (var faceItem in faceItems)
{
var color = faceItem.Label == "女" ? Color.Red : Color.Blue;
MyDraw.DrawAnnotationBox(bitmap, faceItem.Box, faceItem.Label, color, 3);
}
var sampleDir = Path.Combine(Directory.GetCurrentDirectory(), "Output");
var outputPath = Path.Combine(sampleDir, Path.GetFileName(imagePath));
bitmap.Save(outputPath, ImageFormat.Jpeg);
Console.WriteLine($"标注完成,已保存到: {outputPath}");
}
}
效果

AI 改作业 并标注
cs
public async Task<IEnumerable<HomeworkItem>?> GetAnnotationAsync(string imagePath)
{
var bytes = await File.ReadAllBytesAsync(imagePath);
var chatHistory = new ChatHistory();
chatHistory.AddSystemMessage(
"""
你是一个作业批改助手,请你标注出图片中的所有题(包括回答),并通过JSON返回批改结果。
JSON格式的批改结果需要包含以下内容:
- "q_box": 题目的bbox_2d边界框
- "qc": 题目内容
- "a_box": 回答的bbox_2d边界框
- "ac": 回答内容
- "is": 回答是否正确(布尔值,true或false)
- 如果回答错误 在 "er"中详细说明错误情况
示例如下:
[
{
"q_box": [0, 0, 0, 0],
"qc": "题目内容",
"a_box": [0, 0, 0, 0],
"ac": "回答内容",
"is": false,
"er": "如果回答错误,这里详细说明错误情况,没有错误可以不要该字段"
}
]
""");
chatHistory.AddUserMessage([
new TextContent("批改作业"),
new ImageContent(bytes, "image/png")
]
);
var reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);
if (reply.Content is null) return [];
var jsonStr = Regex.Replace(reply.Content, @"^\s*```json|```\s*$", "", RegexOptions.Multiline).Trim();
Console.WriteLine(jsonStr);
return reply.Content is null ? [] : JsonSerializer.Deserialize<IEnumerable<HomeworkItem>>(jsonStr);
}

小老板们都表示 功能很牛逼。。。