OpenAI API可以处理文件吗?一些朋友在使用OpenAI API时,想借助GPT模型来分析文件,如图片、PDF、Excel等,本文ChatGPT中文网就分享下使用OpenAI API分析文件的教程,实现类似ChatGPT Plus的功能。
一、前言
OpenAI API目前不支持直接分析处理文件,多态的GPT模型(如gpt-4-vision-preview、gpt-4o等)可以通过API提供image_url来分析照片,但是还不可以直接处理PDF或者Excel表格。所以,如果你想通过API来实现类似于ChatGPT Plus的文件分析功能,只能使用官转API的逆向模型,如gpt-4-all和gpt-4o-all,这些模型就相当于在使用ChatGPT Plus,自然是可以分析文件的。
什么是逆向模型?逆向模型其实就是官转API平台通过某些技术手段实现的模型,用户在调用这些模型时,就相当于在使用ChatGPT,如gpt-4-all就是ChatGPT Plus的GPT-4,gpt-4o-all就是ChatGPT Plus的GPT-4o。
本文以之前推荐过的官转API为例子介绍下如何通过API来分析处理文件:便携AI聚合API
关于OpenAI官转API的介绍,可以参考:
二、OpenAI API分析图片教程
OpenAI API分析图片的方式有两种,一种是通过多态模型的image_url参数,另一种就是直接通过URL来问逆向模型。
1、多态模型分析图片教程
通过多态模型特有的image_url参数来提供图片的url,之后模型就会给出对应的图片分析结果,如gpt-4-vision-preview:
import requests api_key = 'sk-Xysdfasdfafsd3' url = 'https://api.bianxie.ai/v1/chat/completions' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}' } data = { 'model': 'gpt-4-vision-preview', 'messages': [ { "role": "user", "content": [ { "type": "text", "text": "这张图片的图标是个什么动物?" }, { "type": "image_url", "image_url": { "url": "https://github.com/dianping/cat/raw/master/cat-home/src/main/webapp/images/logo/cat_logo03.png" } } ] } ], } response = requests.post(url, headers=headers, json=data) print(response.json())
2、逆向模型分析图片教程
你也可以直接通过逆向模型来问,如gpt-4o-all:
import requests api_key = 'sk-Xy3WuCpTTvY19f' url = 'https://api.bianxie.ai/v1/chat/completions' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}' } data = { 'model': 'gpt-4o-all', 'messages': [{'role': 'user', 'content': '这张图片的图标是个什么动物:https://github.com/dianping/cat/raw/master/cat-home/src/main/webapp/images/logo/cat_logo03.png'}], } response = requests.post(url, headers=headers, json=data) print(response.json())
返回结果如下:
{ 'id': 'chatcmpl-89DdgyngTboLVagRjepDqY0rp7rfu', 'object': 'chat.completion', 'created': 1718113414, 'model': 'gpt-4o-all', 'choices': [{ 'index': 0, 'message': { 'role': 'assistant', 'content': '这张图片的图标是一只猫。图标呈现了一只抽象化的猫的形象,整体采用了蓝色和紫色渐变的颜色设计。猫的尾巴和身体的轮廓都很清晰,简洁而富有现代感。图标旁边还有“CAT”这个单词,进一步表明这是一个猫的图标。' }, 'finish_reason': 'stop' }], 'usage': { 'prompt_tokens': 43, 'completion_tokens': 122, 'total_tokens': 165 } }
三、OpenAI API分析PDF教程
如果想通过OpenAI API处理分析PDF,那只能通过逆向模型来处理(能力与ChatGPT Plus一致),同样调用gpt-4o-all模型来处理PDF(提供PDF文件的链接):
import requests api_key = 'sk-Xy3WuCpTTvY19gBy226f5999856c404aB44804A53e5eA46f' url = 'https://api.bianxie.ai/v1/chat/completions' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}' } data = { 'model': 'gpt-4o-all', 'messages': [{'role': 'user', 'content': '分析下这个pdf:https://***.com/aSzUB4IxJDcEh.pdf'}], } response = requests.post(url, headers=headers, json=data) print(response.json())
返回结果如下:
{ 'id': 'chatcmpl-89D7TMLihlDDL9Q70TFmoJLIt7G1W', 'object': 'chat.completion', 'created': 1718008779, 'model': 'gpt-4-all', 'choices': [{ 'index': 0, 'message': { 'role': 'assistant', 'content': '> retrieving file (file-8fTnE) ok ✅\n\n这份PDF文档详细介绍了一个关于OpenAI API充值服务的说明。内容包括充值的注意事项、充值购买流程以及其他相关业务。\n\n### 主要内容分析\n\n#### 一、OpenAI API充值注意事项\n\n1. **充值服务**:该服务可以为OpenAI platform充值余额,充值后会自动开通GPT-4.0 API功能,并解除免费版API的调用限制(每分钟3次,每天200次)。\n2. **充值方法**:通过正规国外Visa/MasterCard信用卡进行充值。\n3. **充值后的权限**:充值账号后会自动开通GPT-4.0 API的权限,解除速率限制。\n4. **API余额有效期**:充值的API余额有效期为1年。\n\n#### 二、OpenAI API充值购买流程\n\n1. **充值下单地址**:提供了具体的充值下单网址。\n2. **所需信息**:\n - 需要充值API的ChatGPT账号。\n - 如果没有开通API功能的账号,也可以购买一个OpenAI API Key。\n - 下单时需要指定充值金额(最低5美元)。\n3. **支付方式**:通过支付宝付款。\n4. **充值过程**:人工通过美国家庭宽带进行充值,充值完成后通过邮件通知。\n\n#### 三、其他OpenAI业务\n\n1. **ChatGPT账号**:提供美国本地手工注册的ChatGPT账号,一人一号不共享,永久免费使用。\n2. **ChatGPT Plus代升级**:提供代升级ChatGPT Plus服务,解锁GPT-4.0功能,使用正规Visa/MasterCard信用卡,可续费并永久质保。\n3. **相关教程**:推荐关注“ChatGPT 博客”获取更多ChatGPT相关教程。\n\n### 总结\n\n这份文档主要针对需要使用OpenAI API的用户,提供了详尽的充值服务说明。服务包括充值、开通高级功能和解除使用限制等,还附带了其他相关的OpenAI服务,例如账号注册和升级。提供的充值服务主要通过国际信用卡和支付宝付款,目标客户为需要频繁使用OpenAI API的用户,尤其是那些希望提升调用频率和使用高级功能的用户。\n\n如果你需要更多详细信息或具体操作步骤,可以访问文档中提供的链接查看。' }, 'finish_reason': 'stop' }], 'usage': { 'prompt_tokens': 57, 'completion_tokens': 744, 'total_tokens': 801 } }
四、OpenAI API分析Excel教程
跟处理PDF一样,Excel同样只能通过逆向模型实现,如下(提供Excel文件的链接):
import requests api_key = 'sk-Xy3WuCpTTvY19gBy226f5999856c' url = 'https://api.bianxie.ai/v1/chat/completions' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}' } data = { 'model': 'gpt-4o-all', 'messages': [{'role': 'user', 'content': '分析下这个表格:https://***.com/ZlJeeIVvU.xlsx'}], } response = requests.post(url, headers=headers, json=data) print(response.json())
返回结果如下:
{ 'id': 'chatcmpl-89DUT06P2esaDsTqNBrsvs4ODOkFc', 'object': 'chat.completion', 'created': 1718112826, 'model': 'gpt-4o-all', 'choices': [{ 'index': 0, 'message': { 'role': 'assistant', 'content': "\n```python\n import pandas as pd\n\n# Load the Excel file\nfile_path = '/mnt/data/2024-06-11-21-zE2k3rhRSKPGEKKz37hX.xlsx'\ndf = pd.read_excel(file_path)\n\n# Display the dataframe\ndf\n```\nResult: run success✅\n```shell\n 持有人姓氏 持有人名字 手机号区号 手机号 Address Line1 \\\n0 Nelson Kenneth 1 5038088616 1723 North Interstate Avenue \n1 Young James 1 5419518465 2805 Northwest Upshur Street \n2 Thompson Kevin 1 9714167972 2034 Southeast 24th Avenue \n3 Walker Ronald 1 5032591471 5405 Southeast Woodward Street \n4 Moore Jeffrey 1 9713837018 4216 Silverado Trail \n.. ... ... ... ... ... \n94 Brown Timothy 1 9712056648 3124 Southeast 131st Avenue \n95 Hall Edward 1 5417654581 2524 Northeast 28th Avenue \n96 Perez James 1 5417252794 548 Wedgewood Drive \n97 Thomas Donald 1 5036476838 110 Northeast Greenwood Avenue \n98 Mitchell Eric 1 9712653143 4413 Southeast 131st Place \n\n Address Line2 City State/Province/Region ZIP Code 卡片标签(选填) \\\n0 NaN Portland OR 97227 NaN \n1 NaN Portland OR 97210 NaN \n2 NaN Portland OR 97214 NaN \n3 NaN Portland OR 97206 NaN \n4 NaN Eugene OR 97404 NaN \n.. ... ... ... ... ... \n94 NaN Portland OR 97236 NaN \n95 NaN Portland OR 97212 NaN \n96 NaN Eugene OR 97404 NaN \n97 NaN Bend OR 97701 NaN \n98 NaN Portland OR 97236 NaN \n\n 使用场景设置1(选填,如不填写默认不限制场景) 使用场景设置2(选填,如不填写默认不限制场景,如填写多个请用“,”隔开) \n0 NaN NaN \n1 NaN NaN \n2 NaN NaN \n3 NaN NaN \n4 NaN NaN \n.. ... ... \n94 NaN NaN \n95 NaN NaN \n96 NaN NaN \n97 NaN NaN \n98 NaN NaN \n\n[99 rows x 12 columns]\n```\n\n这个表格包含了99条记录,每条记录描述了一位持有人的详细信息。每条记录包括以下列:\n\n1. **持有人姓氏**:持有人的姓氏,例如 Nelson, Young。\n2. **持有人名字**:持有人的名字,例如 Kenneth, James。\n3. **手机号区号**:手机号的区号,所有记录的区号均为 1。\n4. **手机号**:持有人的手机号码,例如 5038088616, 5419518465。\n5. **Address Line1**:地址第一行,例如 1723 North Interstate Avenue, 2805 Northwest Upshur Street。\n6. **Address Line2**:地址第二行,该列大多数为空。\n7. **City**:城市,例如 Portland, Eugene。\n8. **State/Province/Region**:州/省/地区,所有记录均为 OR(俄勒冈州)。\n9. **ZIP Code**:邮政编码,例如 97227, 97210。\n10. **卡片标签(选填)**:卡片标签,该列全部为空。\n11. **使用场景设置1(选填,如不填写默认不限制场景)**:使用场景设置1,该列全部为空。\n12. **使用场景设置2(选填,如不填写默认不限制场景,如填写多个请用“,”隔开)**:使用场景设置2,该列全部为空。\n\n### 数据分析\n\n1. **地理分布**:所有记录都位于俄勒冈州(OR),城市主要是 Portland 和 Eugene。\n2. **手机号分布**:不同城市的手机号分布相对均匀。\n3. **地址**:大多数地址没有第二行信息,这表明地址比较简洁。\n4. **标签和使用场景设置**:所有卡片标签和使用场景设置列均为空,可能表示这些信息未填写或不需要填写。\n\n### 建议\n- **地理定位**:如果需要进一步分析,可以基于城市或邮政编码进行地理定位分析。\n- **数据完整性**:大多数可选字段为空,可以考虑是否需要这些字段以及如何获取或填写这些信息以提高数据完整性。\n- **手机号验证**:可以对手机号进行验证,确保其格式和区号的一致性。\n\n如果你有更具体的分析需求,请告知,我可以根据需要进行进一步的数据处理和分析。" }, 'finish_reason': 'stop' }], 'usage': { 'prompt_tokens': 75, 'completion_tokens': 1295, 'total_tokens': 1370 } }