Skip to content

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 参数说明

参数类型必填描述
modelstring模型名称,例如 claude-3-5-sonnet-20240620
messagesarray<object>聊天消息数组;每项可为纯文本或混合数组(文本/文件/图片)
temperaturenumber采样温度,0-2 之间
top_pnumber核采样阈值
streamboolean是否流式返回
max_tokensnumber最大生成 tokens 数
thinkingobjectClaude 特有的“先思考”参数(仅部分模型支持)

关于 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