admin 管理员组文章数量: 887019
写在开始之前
写这篇文章的本意在于一开始搜到了很多调用openai api的文章,但是版本太老,不支持openai更新后的版本了,甄别教程的版本还是花了我很多时间,后面才发现官方文档。所以总之如果科学上网条件允许,建议直接访问openai的官方文档,有非常详细的介绍和直接可使用的代码,包括text2speech,vision等各种功能。
https://platform.openai/docs/overviewhttps://platform.openai/docs/overview
当然如果懒得看英文文档也可以继续浏览啦~)
调用vision API
准备工作
- openai账号
- 注册一个api,记下api key(只能查看一次)
- 在python环境里下载好openai库
这里我在anaconda里准备了一个python3.9的环境,激活环境后conda install openai即可。(笔者没有考察过openai<1.0对于GPT4的api支持情况,总之新版的调用方式跟之前差别挺大)
conda activate your_env
conda install openai
conda list openai
图片上传与得到结果
准备一张你准备用来上传给api的图片。ChatGPT4 vision api目前支持一张或多张的image_url或base64图片,这里先以image_url为例。
1. 将图片转为公网可访问的url
你需要类似Postimages — 免费图片托管 / 图片上传之类的工具,将你打算传给GPT的图片上传,再把给出的url放到代码里。类似
2. 修改代码
把api key,图片url粘贴到代码里,就可以发送了,会直接打印返回的内容。
from openai import OpenAI
client = OpenAI()
api_key = "这里放你的api key,类似sk-xxx"
max_tokens = 200
client = OpenAI(
api_key=api_key,
)
chat_completion = client.chatpletions.create(
model="gpt-4-vision-preview",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What’s in this image?"},
{
"type": "image_url",
"image_url": {
"url": "这里放你的图片url",
},
},
],
}
],
max_tokens=max_tokens,
)
print(chat_completion.choices[0].message.content)
base64图片
一种替代的方式是把本地的图片文件转成base64格式(表现为一种很长的字符串),通过请求的方式传给api。代码为
import base64
import requests
api_key = "你的api"
# Function to encode the image
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "你的本地图片路径"
# Getting the base64 string
base64_image = encode_image(image_path)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What’s in this image?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai/v1/chat/completions", headers=headers, json=payload)
print(response.json()['choices'][0]['message']['content'])
你可能会遇到的一些问题
1. api余额不足
可以在https://platform.openai/usage这个页面查看你的余额。不过值得一提的是页面上显示的数字是已用额度/每月限制额度,余额查看在下面的balance里,能看到每一笔充值和剩余情况。
2. 网络连接问题
这个错误的发生可能因人而异,笔者自己做得还挺顺利的)推荐的处理方式有全局加速,添加os.environ["http_proxy"]等等...
本文标签: ChatGPT4vision python api OpenAI
版权声明:本文标题:python调用ChatGPT4vision api(openai==1.3.6) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1724990334h845752.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论