当前位置: 首页 > article >正文

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。

文本+视图 理解

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);
}

结果

[
    {"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": "女"}
]


代码

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 改作业 并标注 

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


http://www.kler.cn/a/614350.html

相关文章:

  • 全球化2.0 | ZStack举办香港Partner Day,推动AIOS智塔+DeepSeek海外实践
  • 【云原生】docker 搭建单机PostgreSQL操作详解
  • 【Prometheus】Prometheus的特点、数据采集方式、架构、数据模型详解
  • 【Linux指南】Linux内核:操作系统的核心引擎
  • 前端快速系统学习Rust的路径
  • 【CSS】相对位置小练习
  • 基于springboot+vue的农产品电商平台
  • C++ STL 序列式容器之(三)-- List
  • 全包圆玛奇朵样板间亮相,极简咖啡风引领家装新潮流
  • 365打卡第J7周:对于ResNeXt-50算法的思考
  • 【MySQL数据库】MySQL 主从复制检查方式
  • es6 fetch
  • 【商城实战(100)】商城败局启示录:探寻成功的反方向
  • 算法刷题记录——题解目录汇总(持续更新)
  • 拦截器和过滤器详解
  • Centos与Ubuntu系统的对比分析
  • 《K230 从熟悉到...》矩形检测
  • [GXYCTF2019]禁止套娃1 [GitHack] [无参数RCE]
  • 算法基础——树
  • 表单对象与当前行对象的 区别