当前位置:   article > 正文

python调用ChatGPT4vision api(openai==1.3.6)_gpt4 vision api

gpt4 vision api

写在开始之前

写这篇文章的本意在于一开始搜到了很多调用openai api的文章,但是版本太老,不支持openai更新后的版本了,甄别教程的版本还是花了我很多时间,后面才发现官方文档。所以总之如果科学上网条件允许,建议直接访问openai的官方文档,有非常详细的介绍和直接可使用的代码,包括text2speech,vision等各种功能。

https://platform.openai.com/docs/overviewicon-default.png?t=N7T8https://platform.openai.com/docs/overview

当然如果懒得看英文文档也可以继续浏览啦~)

调用vision API

准备工作

  • openai账号
  • 注册一个api,记下api key(只能查看一次)
  • 在python环境里下载好openai库

这里我在anaconda里准备了一个python3.9的环境,激活环境后conda install openai即可。(笔者没有考察过openai<1.0对于GPT4的api支持情况,总之新版的调用方式跟之前差别挺大)

  1. conda activate your_env
  2. conda install openai
  3. conda list openai

图片上传与得到结果

准备一张你准备用来上传给api的图片。ChatGPT4 vision api目前支持一张或多张的image_url或base64图片,这里先以image_url为例。

1. 将图片转为公网可访问的url

你需要类似Postimages — 免费图片托管 / 图片上传之类的工具,将你打算传给GPT的图片上传,再把给出的url放到代码里。类似

2. 修改代码

把api key,图片url粘贴到代码里,就可以发送了,会直接打印返回的内容。

  1. from openai import OpenAI
  2. client = OpenAI()
  3. api_key = "这里放你的api key,类似sk-xxx"
  4. max_tokens = 200
  5. client = OpenAI(
  6. api_key=api_key,
  7. )
  8. chat_completion = client.chat.completions.create(
  9. model="gpt-4-vision-preview",
  10. messages=[
  11. {
  12. "role": "user",
  13. "content": [
  14. {"type": "text", "text": "What’s in this image?"},
  15. {
  16. "type": "image_url",
  17. "image_url": {
  18. "url": "这里放你的图片url",
  19. },
  20. },
  21. ],
  22. }
  23. ],
  24. max_tokens=max_tokens,
  25. )
  26. print(chat_completion.choices[0].message.content)

base64图片

一种替代的方式是把本地的图片文件转成base64格式(表现为一种很长的字符串),通过请求的方式传给api。代码为

  1. import base64
  2. import requests
  3. api_key = "你的api"
  4. # Function to encode the image
  5. def encode_image(image_path):
  6. with open(image_path, "rb") as image_file:
  7. return base64.b64encode(image_file.read()).decode('utf-8')
  8. image_path = "你的本地图片路径"
  9. # Getting the base64 string
  10. base64_image = encode_image(image_path)
  11. headers = {
  12. "Content-Type": "application/json",
  13. "Authorization": f"Bearer {api_key}"
  14. }
  15. payload = {
  16. "model": "gpt-4-vision-preview",
  17. "messages": [
  18. {
  19. "role": "user",
  20. "content": [
  21. {
  22. "type": "text",
  23. "text": "What’s in this image?"
  24. },
  25. {
  26. "type": "image_url",
  27. "image_url": {
  28. "url": f"data:image/jpeg;base64,{base64_image}"
  29. }
  30. }
  31. ]
  32. }
  33. ],
  34. "max_tokens": 300
  35. }
  36. response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
  37. print(response.json()['choices'][0]['message']['content'])

你可能会遇到的一些问题

1. api余额不足

可以在https://platform.openai.com/usage这个页面查看你的余额。不过值得一提的是页面上显示的数字是已用额度/每月限制额度,余额查看在下面的balance里,能看到每一笔充值和剩余情况。

2. 网络连接问题

这个错误的发生可能因人而异,笔者自己做得还挺顺利的)推荐的处理方式有全局加速,添加os.environ["http_proxy"]等等...

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/643230
推荐阅读
相关标签
  

闽ICP备14008679号