🧩 一、Claude API 的基础结构
在调用 Claude API 进行消息生成时,核心结构如下:
ini
client.messages.create(
model=..., # 指定模型名称
messages=..., # 对话历史(上下文)
max_tokens=..., # 最大输出长度
temperature=..., # 回复随机性(创造性)
system=..., # 系统角色设定(可选)
)
🔍 二、参数详解
1. model
(必须参数)🧠
指定使用的 Claude 模型,不同模型具备不同能力与价格。
可选值示例:
模型名称 | 智能程度 | 价格 | 适用场景 |
---|---|---|---|
claude-3-haiku-20240307 |
⭐⭐ | 💰低 | 响应速度要求高 |
claude-3-sonnet-20240229 |
⭐⭐⭐⭐ | 💰中 | 平衡性能与价格 |
claude-3-opus-20240229 |
⭐⭐⭐⭐⭐ | 💰高 | 最强大模型 |
建议 :常用模型为 claude-3-sonnet-20240229
,兼顾能力与成本。
2. messages
(必须参数)🧾
传入对话的历史内容,是一个"消息列表",每条消息是一个字典:
css
[ {"role": "user", "content": "你好 Claude"}, {"role": "assistant", "content": "你好,我能为你做什么?"}, {"role": "user", "content": "什么是机器学习?"}]
role
:角色,支持user
和assistant
,一般来说,user
是最终使用的用户,assistant
一般指的是大模型本身content
:文本内容(字符串),支持多种媒体类型,文字、图片、视频、音频
🧠 Claude 会基于历史消息进行上下文推理,所以实现多轮对话时必须带入完整消息列表。
3. max_tokens
(必须参数)📏
指定 Claude 返回的最大输出 token 数(不是字数!)
- 1 token ≈ 0.75 个英文词 ≈ 1~1.5 个中文字符
- Claude 最大支持约 8000 token
- 控制响应长度,防止成本过高或生成太长
示例:max_tokens=1024
(一般回答已足够)
4. temperature
(可选参数)🌡️
控制生成内容的"创造性"与"确定性":
0.0
:非常保守,只选最可能的词0.5
:中庸、自然(推荐值)1.0
:更具创造性,随机性更强
💡 适合内容创作(如写诗、写故事)时设置高温度;写代码、问事实类问题时建议设置为 0.3~0.7
5. system
(可选参数)🧑🏫
为 Claude 设置系统角色,比如指定语气、身份、限制回答范围等:
ini
system="你是一位礼貌、有逻辑的编程导师。请用中文回答问题。"
与 GPT 不同,Claude 是单独以 system=...
参数传入,而不是塞在 messages
中。
6. stop_sequences
(可选参数)🛑
用于控制 Claude 生成内容的"停止点",当遇到这些字符串时将立即停止输出。
ini
stop_sequences=["\n\nUser:"]
适用于需要精确结构控制的应用场景,如 Q&A 对话、代码生成等。
7. top_k
(整数,非必填)
- 限制每步解码中,Claude 仅从概率最高的前 K 个词中采样。
- 通常与
temperature
搭配使用。 - 默认值为
None
,不限制。
🔧 开发建议:
- 在追求"确定性"场景中(如问答测评、客观查询),建议设置较小的
top_k
(如 20)。 - 与
temperature=0.2~0.5
配合使用效果更稳定。
8. top_p
(浮点数,非必填)
- 也称"nucleus sampling",Claude 仅从概率累积值小于
top_p
的 token 中采样。 - 值越小 → 越保守(只用高概率 token)。
🔧 开发建议:
top_p=0.95
是比较常用的平衡值,适合文本生成。top_p=0.8
可用于对答案质量要求较高的任务。
🧪 三、示例代码:调用 Claude 并使用多个参数
ini
from anthropic import Anthropic
client = Anthropic(api_key="sk-你的API密钥")
response = client.messages.create(
model="claude-3-sonnet-20240229",
messages=[
{"role": "user", "content": "我叫小明"},
{"role": "assistant", "content": "你好,小明!"},
{"role": "user", "content": "什么是人工智能?"}
],
max_tokens=1024,
temperature=0.5,
system="你是一位知识丰富的讲解者,用简洁的语言帮助用户理解问题。",
)
print("Claude 回复:", response.content[0].text)
🧩 四、不常用但重要的参数
1. metadata
(字典,非必填)
- 用于为请求附加开发者自定义的元信息(如用户ID、任务来源)。
- 不影响 Claude 生成,仅用于日志/统计/权限等服务端逻辑。
📌 示例用途:
python
metadata={"user_id": "user_001", "project": "chatbot_a"}
2. anthropic-version
(字符串,请求头必填)
-
用于指定 Claude API 的版本,当前最常见的是:
arduino"2023-06-01"
-
若省略将可能收到兼容性错误。
3. anthropic-beta
(字符串,非必填)
-
用于申请试用或开启内测功能(如
tool_use-v1
、vision
)。 -
当前如需调用工具使用 或多模态视觉模型 ,需添加:
pythonheaders["anthropic-beta"] = "tool_use-v1"
4. x-api-key
(字符串,请求头必填)
- 即你的 Claude API Key,用于身份验证。
- 推荐通过环境变量或安全存储调用,避免硬编码。
🛡 示例代码:
python
import os
from anthropic import Anthropic
API_KEY = os.getenv("CLAUDE_API_KEY") # 或直接写入(不推荐)
client = Anthropic(api_key=API_KEY)
🧠 五、参数组合建议
使用场景 | 推荐参数组合 |
---|---|
客观问答 | temperature=0.3, top_k=20, stop_sequences |
创意写作 | temperature=0.9, top_p=0.95 |
对话机器人 | temperature=0.6, stop_sequences=["你:"] |
代码生成 | temperature=0.2, top_p=0.8 |
视觉理解(beta) | anthropic-beta="tool_use-v1", messages 中包含 image |
🔚 总结
参数名 | 类型 | 是否必须 | 功能简述 |
---|---|---|---|
model |
str | ✅ 是 | 指定使用的 Claude 模型 |
messages |
list | ✅ 是 | 对话历史上下文 |
max_tokens |
int | ✅ 是 | 控制输出长度 |
temperature |
float | ❌ 否 | 决定回复的创造性 |
system |
str | ❌ 否 | 设置 Claude 的系统角色 |
stop_sequences |
list | ❌ 否 | 设置 Claude 生成时的终止点 |
掌握这些参数后,你将能够灵活掌控 Claude 的生成能力,轻松打造更智能、更贴合场景的 AI 应用。