OpenAI API 傳送圖檔給 GPT-4o 分析
| | 0 | | ![]() |
OpenAI 去年 5 月推出的 GPT-4o 模型,最大亮點是支援多模態,能同時處理文字跟影像。
因此,我們可以在 ChatGPT 貼照片請它分析:
或是拍照數學考卷讓 AI 解題:
我已經試過呼叫 OpenAI API 彙總文章、翻譯印尼文、整合第三方服務... 等各式雜耍,但還不會傳圖檔給 GPT 解讀,這篇來補上這塊拼圖。
網路上有不少程式範例,但都是直接傳 REST。Azure OpenAI 服務聊天遊樂場有給 C# 範例,但卻是用組 JSON 走 HttpClient,而非我想用的 Azure OpenAI .NET 程式庫寫法:
所以這個議題的挑戰在於東西太新、文件缺乏、討論太少,資訊頗難找。經過一番挖掘,總算找到解法。借用上回 Azure OpenAI .NET 程式庫範例,我修改 Complete() 方法,新增一個 (byte[] binary, string mimeType)[] images
參數,可傳入圖片 byte[] 及 MIME Type,透過 UserChatMessage.Content.Add(ChatMessageContentPart.CreateImagePart(BinaryData.FromBytes(binary), mimeType))
將圖檔當成使用者訊息的一部分送出。
public async Task<string> Complete(string msg, bool includeHistory = false, (byte[] binary, string mimeType)[] images = null!)
{
if (clearHistory)
{
history.Clear();
clearHistory = false;
}
logger.Info("Ask: {0}", msg);
// [1] System Prompt 及交談歷史紀錄
var chatMessages = new List<ChatMessage>() {
new SystemChatMessage(GenSystemPrompt()),
};
if (includeHistory) chatMessages.AddRange(history);
var userChatMsg = new UserChatMessage(msg);
if (images != null)
{
foreach (var (binary, mimeType) in images)
{
userChatMsg.Content.Add(ChatMessageContentPart.CreateImagePart(BinaryData.FromBytes(binary), mimeType));
}
}
//... 省略 ...
呼叫端傳入照片,再輸入 Prompt "請解析這張照片",我們的程式自此也具有了解讀圖片的能力,水啦~
OpenAI’s GPT-4o model supports multi-modal inputs, processing both text and images. This post shows how to use .NET OpenAI client library to include image parameters for analysis via OpenAI API.
Comments
Be the first to post a comment