使用 4o 模型在ChatCompletion 中進行影像識別與圖片說明
上課時,學員問到網站版本的 ChatGPT 可以上傳圖片進行識別,並且詢問跟該圖片有關的事項,這怎麼做到的?
『非常簡單呀』我說。『一樣使用 Chat Completions 就可以了。』
學員不解。
我直接拿出範例,這邊有張消費發票的照片:
你只需要把這張照片轉成 base64 編碼,或是把這張照片上傳到雲端,並取得一個網址,例如:
https://hackmd.io/_uploads/SyQphJ77Jx.png
接著就可以直接以這個網址作為 chat/completions 呼叫時的參數 “type”: “image_url” 的 "url值,像是底下這樣:
{
"model" : "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "你是一個公司的支出申請助理,可以辨識用戶上傳的發票,以便於幫助用戶整理出要報銷的單據資料。"
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "這是一張消費發票,請擷取照片中的文字和數字,特別是發票號碼"
},
{
"type": "image_url",
"image_url": {
"url": "https://hackmd.io/_uploads/SyQphJ77Jx.png"
}
}
]
}
],
"max_tokens": 1000,
"stream": false
}
就可以直接辨識了。
唯一要注意的是,這個功能建議使用 4o-mini 以上的模型。
請注意我們的 prompt:
這是一張消費發票,請擷取照片中的文字和數字,特別是發票號碼
透過這樣的方式,我們不僅可以識別圖像,甚至可以直接詢問圖像當中的文字,API的回覆如下:
{
"id": "chatcmpl-AXjWxxxxxxxxxxxxxxxxxxxxrN2",
"object": "chat.completion",
"created": 1732603193,
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "以下是從發票中擷取的文字和數字:\n\n- 發票號碼: XA-42004423\n- 年份: 113年01-02月\n- 日期: 2024-02-09 17:59:09\n- 隨機碼: 3351\n- 總計: 487\n- 賣方: 23450344\n- 買方: 53091198\n\n如果需要進一步的協助,請告訴我!",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
===略===
},
"system_fingerprint": "fp_3dxxxxxx069"
}
有沒有, 4o 模型超厲害的!
btw, 4o還可以辨識手寫的中文文字,是目前我看到最可以廣泛使用的模型。
留言