如何通过Microsoft.Extensions.AI为ChatMessage正确添加图片输入
使用Microsoft.Extensions.AI调用Azure OpenAI gpt-4o-mini实现图片描述
可行性确认
该需求完全可行,gpt-4o-mini支持多模态输入(包含图片),问题出在你当前的消息内容构造方式不符合多模态消息的规范。
正确实现方式
本地图片文件场景
需直接构造包含文本指令和图片内容的多模态ChatMessage,而非先创建单文本消息再追加图片内容:
using Microsoft.Extensions.AI; using System.IO; // 读取本地图片字节数据 var imageBytes = File.ReadAllBytes(@"C:\temp\example.jpg"); // 创建包含文本指令与图片的用户消息 var message = new ChatMessage( ChatRole.User, new TextContent("Please describe this image in one sentence"), new ImageContent(imageBytes, "image/jpeg") ); chatHistory.Add(message); // 流式获取模型响应 await foreach (var item in chatClient.CompleteStreamingAsync(chatHistory)) { Console.Write(item.Text); }
远程图片URL场景
同样需在ChatMessage构造阶段同时传入文本指令和图片URL内容:
using Microsoft.Extensions.AI; // 创建包含文本指令与远程图片的用户消息 var message = new ChatMessage( ChatRole.User, new TextContent("Please describe this image in one sentence"), new ImageContent(new Uri("https://example.net/example.jpg")) ); chatHistory.Add(message); // 流式获取模型响应 await foreach (var item in chatClient.CompleteStreamingAsync(chatHistory)) { Console.Write(item.Text); }
注意事项
- 确保Azure OpenAI资源已正确部署gpt-4o-mini模型,且API密钥、端点地址配置无误
- 图片格式需为模型支持的类型(如JPG、PNG),单张图片大小需符合Azure OpenAI的限制要求
- 流式调用时需保证异步逻辑正确,避免因同步阻塞导致的响应卡顿
内容的提问来源于stack exchange,提问作者Mark Heath
相关产品推荐
相关产品推荐

