C# .net ai Agent AI视觉应用 写代码 改作业 识别屏幕 标注等

C# net deepseek RAG AI开发 全流程 介绍_c# 向量处理 deepseek-CSDN博客

视觉多模态大模型 通义千问2.5-VL-72B

AI大模型能看懂图 看懂了后能干啥呢

如看懂图 让Agent 写代码 ,改作业,识别屏幕 标注等等。。。

据说是目前最好的免费图片识别框架 通义千文 免费开源大模型

GitHub - QwenLM/Qwen2.5-VL: Qwen2.5-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.

食谱

食谱 描述 打开
普遍认可 不仅可以识别动物、植物、人和景点,还可以识别汽车和商品等各种物体。
强大的文档解析能力 文档的解析已经达到了更高的水平,不仅包括文本,还包括布局位置信息和我们的 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);
 }

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

C# net deepseek RAG AI开发 全流程 介绍_c# 向量处理 deepseek-CSDN博客

相关推荐
今日无bug3 小时前
大模型的回答是怎么一个字一个字蹦出来的?前端流式输出解析
前端·llm·agent
简单风4 小时前
别再让 Agent 光会表演:能过编译、过 Schema、过检查的,才叫真正落地
agent
阿里云云原生4 小时前
评估:从黄金指标到 Rubric丨AgentLoop 数据飞轮实践(三)
agent
xierui1231235 小时前
NotionAgent 新增建议修改:如何用Patch、Diff 与人工确认设计 AI 改稿工作流
人工智能·ai·自然语言处理
.唉5 小时前
05. LangGraph 深度解析:从基础概念到高级应用全指南
agent·langgraph
奇牙coding1235 小时前
gpt-5.6-sol 调用一直 429 但 gpt-5.5 完全正常怎么办?排查思路与三种应对方案
gpt·ai
AI程序员5 小时前
MCP Apps 能直接返回 HTML,为什么还需要 A2UI?
人工智能·agent·mcp
luckystar513~6 小时前
Hermes实战 :skill编写 + skill治理
人工智能·agent·智能体·hermes·实战专栏
海天一色y6 小时前
构建智能Agent的记忆系统:三层记忆管理器设计
agent·memory
离陌在学C#6 小时前
C# 异步编程:从 async/await 到 Task 实战指南
开发语言·数据库·c#