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博客

相关推荐
山猪打不过家猪3 小时前
(二)毛子整洁架构(CQRS/Dapper/领域事件处理器/垂直切片)
开发语言·.net
△曉風殘月〆4 小时前
C#串口通信
嵌入式硬件·c#·串口
狗屁不会还不知上进的咸鱼6 小时前
obj = null; 赋值null之前没有其他引用指向obj对象,那么,当obj=null时,会被垃圾回收机制立即回收吗?
.net
AI蜗牛车6 小时前
【LLM+Code】Devin Prompt&Tools详细解读
人工智能·语言模型·prompt·copilot·agent
攻城狮7号8 小时前
小米 MiMo 开源:7B 参数凭什么 “叫板” AI行业巨头?
人工智能·ai·开源·mimo·小米ai
步、步、为营9 小时前
.NET中使用HTTPS全解析
数据库·https·.net
奥修的灵魂9 小时前
C#生成二维码和条形码
c#
小浪学编程11 小时前
C#学习7_面向对象:类、方法、修饰符
开发语言·学习·c#
小白跃升坊11 小时前
如何在 AI 小助手对话中显示原文预览
ai·提示词模版
Uranus^12 小时前
Spring AI 入门(持续更新)
java·人工智能·spring·ai