Claude (OpenAI格式)-可PDF分析
简洁描述:
Claude支持 OpenAI 请求格式,同时兼容原生格式。该页面演示如何通过 OpenAI 风格的请求上传 PDF 或图片进行分析(注意:若需缓存或更高效的 PDF 处理,可使用 Claude 原生格式)。
概览
- 请求方法:
POST - 路径:
/v1/chat/completions - 内容类型:
application/json
认证方式
支持常见的 Header 认证格式:
- OpenAI:
Authorization: Bearer sk-xxx - Anthropic(原生):
x-api-key: sk-xxx(原生格式另有扩展)
功能说明
- 支持图片与 PDF 分析:在
messages中可同时传入文本与文件项,文件项可使用 base64(data: 开头)或文件/URL 引用。 - 建议:若需要在上下文中多次使用同一 PDF,推荐使用 Claude 原生格式以利用缓存和更快的解析。
请求示例
Body 参数说明
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| model | string | 是 | 模型名称,例如 claude-3-5-sonnet-20240620 |
| messages | array<object> | 是 | 聊天消息数组;每项可为纯文本或混合数组(文本/文件/图片) |
| temperature | number | 否 | 采样温度,0-2 之间 |
| top_p | number | 否 | 核采样阈值 |
| stream | boolean | 否 | 是否流式返回 |
| max_tokens | number | 否 | 最大生成 tokens 数 |
| thinking | object | 否 | Claude 特有的“先思考”参数(仅部分模型支持) |
关于 messages 中可用的 content 项:
- 文本项:
{ "type": "text", "text": "..." }或直接使用字符串。 - 文件项(base64 或 URL):
- 格式一(file):{ "type": "file", "file": { "filename": "api-doc.pdf", "file_data": "<base64 或 网页 URL>" } }
- 格式二(file_url):{ "type": "file_url", "file_url": { "url": "https://..." } }
- 图片项:{ "type": "image_url", "image_url": { "url": "https://..." } }
示例(聊天):
json
{
"model": "claude-3-5-sonnet-20240620",
"messages": [{ "role": "user", "content": "你好,你是?" }],
"max_tokens": 1688,
"temperature": 0.5,
"stream": false
}示例(PDF 分析,格式一:file_data 为 URL 或 base64):
json
{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "总结一下文档内容" },
{ "type": "file", "file": { "filename": "api-doc.pdf", "file_data": "https://www.bt.cn/data/api-doc.pdf" } }
]
}
],
"max_tokens": 1000,
"stream": false
}示例(PDF 分析,格式二:file_url):
json
{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "总结一下文档内容" },
{ "type": "file_url", "file_url": { "url": "https://www.bt.cn/data/api-doc.pdf" } }
]
}
],
"max_tokens": 1000,
"stream": false
}curl 示例
bash
curl -X POST "https://api.gpt.ge/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxx" \
-d '{"model":"claude-3-5-sonnet-20241022","messages":[{"role":"user","content":[{"type":"text","text":"总结一下文档内容"},{"type":"file_url","file_url":{"url":"https://www.bt.cn/data/api-doc.pdf"}}]}],"max_tokens":1000}'JavaScript (fetch) 示例
javascript
fetch('https://api.gpt.ge/v1/chat/completions', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer sk-xxxx' },
body: JSON.stringify({ model: 'claude-3-5-sonnet-20241022', messages: [{ role: 'user', content: [{ type: 'text', text: '总结一下文档内容' }, { type: 'file_url', file_url: { url: 'https://www.bt.cn/data/api-doc.pdf' } }] }], max_tokens: 1000 })
}).then(r => r.json()).then(console.log)Python 示例(requests)
python
import requests
payload = {
'model': 'claude-3-5-sonnet-20241022',
'messages': [{'role':'user','content':[{'type':'text','text':'总结一下文档内容'},{'type':'file_url','file_url':{'url':'https://www.bt.cn/data/api-doc.pdf'}}]}],
'max_tokens': 1000
}
resp = requests.post('https://api.gpt.ge/v1/chat/completions', headers={'Content-Type':'application/json','Authorization':'Bearer sk-xxxx'}, json=payload)
print(resp.json())返回示例(200)
json
{
"id": "chatcmpl-msg_vrtx_01PjUA6WvGYYorf5rFU5QoKC",
"model": "claude-3-5-sonnet-20240620",
"object": "chat.completion",
"created": 1724998217,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "您好!我是一位人工智能助手,名叫Claude。我是由Anthropic公司开发的AI系统,旨在与人类进行对话交流,回答问题并提供帮助。很高兴认识您!请问有什么我可以帮到您的吗?"
},
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 14, "completion_tokens": 86, "total_tokens": 100 }
}服务器示例:https://api.gpt.ge