// AI Assistant · Prompt Engineering · API · Best Practices
Claude 是由 Anthropic 开发的 AI assistant,基于宪法 AI(Constitutional AI)技术构建,注重安全性、诚实性和无害性(HHH: Helpful, Harmless, Honest)。
Claude 擅长:写作与编辑、代码生成与调试、分析推理、数学计算、多语言处理、创意写作、问答与对话。
| 模型 | 特点 | 适用场景 |
|---|---|---|
| Haiku | 快速 · 轻量 · 低成本 | 简单Q&A · 高频调用 · 实时应用 |
| Sonnet | 均衡 · 推荐 · 主力 | 日常编码 · 分析 · 写作 |
| Opus | 最强 · 复杂推理 | 复杂任务 · 研究 · 高难度代码 |
// 最新版本:claude-haiku-4-5 · claude-sonnet-4-5 · claude-opus-4
Context window 是模型在单次对话中能处理的最大 token 数(输入+输出之和)。
| 概念 | 说明 |
|---|---|
| Token | 约 4 字符 / 0.75 英文词 / 1-2 中文字 |
| Context | 对话历史 + System prompt + 当前消息 |
| 超出限制 | 早期内容被截断或遗忘 |
写好 prompt 的核心:具体、明确、有边界。
关键要素:任务(做什么)+ 约束(怎么做)+ 格式(输出什么样)+ 上下文(背景信息)
System prompt 在对话开始前设定 Claude 的角色、规则和行为,贯穿整个对话。
# 示例 System Prompt
你是一个专业的 Python 后端工程师,
具备 10 年经验。回答时:
- 优先使用最新的 Python 特性
- 代码要包含类型标注
- 提供可能的异常处理
- 指出潜在的性能问题
- 使用中文回答,代码注释用英文
通过提供输入-输出示例,让模型学习格式和风格,无需解释规则。
# Few-shot 示例模式
将以下句子转换为技术文档风格:
输入:"这个功能挺好用的"
输出:"该功能具备良好的用户体验"
输入:"代码跑得很快"
输出:"系统执行性能优异,响应延迟低"
输入:"这个 bug 很难找"
输出: ← Claude 会按格式继续
// 通常 2-5 个示例效果最佳;示例要覆盖边界情况
让 Claude 展示推理过程,可以显著提升复杂任务的准确率。
# 方式1:直接要求
"请一步步思考,然后给出答案"
"让我们逐步分析这个问题"
"Think step by step"
# 方式2:引导格式
"回答前,请先:
1. 分析问题的关键点
2. 列出可能的方案
3. 评估各方案的优缺点
4. 给出最终建议"
# 方式3:Extended Thinking(API)
# 使用 thinking 参数让模型展示
# 内部推理过程(claude-3-7+ 支持)
用 XML 标签明确区分 prompt 的不同部分,让模型更准确理解结构。
<context>
我们是一家电商公司,正在开发推荐系统。
用户数据存储在 PostgreSQL 中。
</context>
<task>
设计一个协同过滤推荐算法的数据库 schema。
</task>
<requirements>
- 支持实时更新用户行为
- 查询响应时间 < 100ms
- 数据量:1000万用户,500万商品
</requirements>
<output_format>
SQL DDL 语句 + 索引设计 + 说明
</output_format>
任务分解:将复杂任务拆分为子任务,逐步完成。
# 代替:一次性要求所有内容
# 步骤化处理:
步骤1: "先帮我梳理这个系统的架构设计"
步骤2: "基于架构,设计数据库 schema"
步骤3: "为 schema 写迁移脚本"
步骤4: "写对应的 ORM model 类"
迭代优化:通过反馈不断改进输出。
Tool use 允许 Claude 调用外部函数(工具),实现搜索网页、执行代码、操作文件等功能。
工作流程:用户发消息 → Claude 决定调用哪个工具 → 执行工具获取结果 → Claude 基于结果回答
# 工具定义结构(API)
tools = [
{
"name": "get_weather",
"description": "获取指定城市的当前天气",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}
]
Artifacts 是 Claude 生成的独立内容单元,在对话框右侧展示,可直接预览和编辑。
| Artifact 类型 | 说明 |
|---|---|
| code | 代码片段,支持语法高亮 |
| html | HTML 页面,实时预览 |
| svg | 矢量图形,可视化预览 |
| mermaid | 流程图/序列图 |
| react | React 组件,交互预览 |
| markdown | 格式化文档 |
import anthropic
client = anthropic.Anthropic(
api_key="your-api-key"
# 或设环境变量 ANTHROPIC_API_KEY
)
# 基本消息
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "用 Python 实现快速排序"
}
]
)
print(message.content[0].text)
# 带 system prompt 的多轮对话
messages = []
def chat(user_input: str) -> str:
messages.append({
"role": "user",
"content": user_input
})
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=2048,
system="你是一个专业的代码审查工程师",
messages=messages
)
reply = response.content[0].text
messages.append({
"role": "assistant",
"content": reply
})
return reply
chat("帮我审查这段代码:...")
chat("第3条建议能详细说明吗?")
# 流式输出(实时显示)
with client.messages.stream(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": "写一篇短文"
}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
# 获取完整消息(流结束后)
message = stream.get_final_message()
print(message.usage) # token使用量
tools = [{
"name": "search",
"description": "搜索网络信息",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"}
},
"required": ["query"]
}
}]
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
tools=tools,
messages=[{"role": "user",
"content": "搜索最新的AI新闻"}]
)
# 检查是否调用了工具
if response.stop_reason == "tool_use":
tool_use = response.content[0]
print(tool_use.name, tool_use.input)
幻觉指模型生成看似合理但实际错误的内容(虚假事实、不存在的引用等)。
| 技巧 | 说明 |
|---|---|
| 明确输出格式 | "用 JSON 格式" / "用 Markdown 表格" / "分3点" |
| 限制输出长度 | "用200字以内" / "只列关键点" |
| 给出反例 | "不要写成X,要写成Y" |
| 分配角色 | "你是..." 比 "请假设..." 效果更好 |
| 肯定句式 | "要做X" 比 "不要做Y" 效果更好 |
| 提供示例 | 2-5 个 few-shot 示例通常足够 |
| 迭代而非重写 | 在已有结果上改进优于重头开始 |
| 上下文优先 | 提供相关代码/文档比单纯描述更好 |
# 代码审查
"""审查以下代码,指出:
1. 潜在的 bug
2. 性能问题
3. 安全漏洞
4. 改进建议(附修改后的代码)
```python
[你的代码]
```"""
# 文档生成
"""为以下函数生成文档:
- 功能描述
- 参数说明(类型、含义、取值范围)
- 返回值说明
- 异常情况
- 使用示例"""
# 技术选型
"""我需要为[场景]选择[类型]方案。
需求:[列出具体需求]
约束:[技术栈/预算/团队规模]
请对比3个主流方案的优缺点,
推荐最适合的并说明理由。"""
| 参数 | 说明 |
|---|---|
| model | 模型 ID,如 claude-sonnet-4-5 |
| max_tokens | 最大输出 token 数(必填) |
| temperature | 0-1,越高越有创意,默认1 |
| top_p | 核采样概率,与 temperature 二选一 |
| system | 系统提示词 |
| messages | 对话历史,user/assistant 交替 |
| tools | 可用工具列表 |
| stream | 是否流式返回 |
| stop_sequences | 遇到这些字符串停止生成 |
| metadata.user_id | 用于滥用检测的用户标识 |