一、引言:Claude API实战场景
在体验完Claude的Web端交互(Artifacts)后,开发者和企业更希望将Claude能力嵌入到自身系统中,实现自动化对话与AI集成应用。而实现这一目标的关键就是:掌握Claude的API调用方式。
二、快速熟悉Claude的API可视化控制台
Claude控制台提供了一种直观的API调试体验,开发者可在其中:
- 设计提示(Prompt)
- 调整参数(如 temperature、max_tokens)
- 选择模型版本(如 Claude 3.5 Sonnet、Haiku、Opus)
- 一键生成 Python 示例代码
这个阶段无需编码,有助于快速理解 Claude 的对话逻辑和模型响应行为。
三、核心函数:一行代码启动智能对话
Claude Python SDK 中的 client.messages.create()
是多轮对话的关键函数。它封装了大部分功能,只需传入三个必选参数:
model
:选择使用的 Claude 模型(如"claude-3-sonnet-20240229"
)messages
:历史对话消息列表,包含角色与内容max_tokens
:限制模型回复的最大长度,控制成本与响应时间(3.5sonnet的范围为1~8192)
同时,也支持 temperature
、system
、stop_sequences
等高级参数。
四、对话数据结构详解
Claude 多轮对话依赖消息历史列表(messages
)实现上下文记忆:
css
[ {"role": "user", "content": "我是super man"}, {"role": "assistant", "content": "你好,super man"}, {"role": "user", "content": "太阳为什么不会被高温蒸发?"}]
第一条必须是 "user"
,后续交替出现 "assistant"
与 "user"
,Claude会根据历史上下文生成更合理的回复。
五、实战实现:命令行交互式多轮机器人
通过简单的命令行程序,即可实现持续记忆的对话:
ini
conversation = []
while True:
question = input("你:")
if question.lower() == "exit":
break
conversation.append({"role": "user", "content": question})
response = client.messages.create(
model="claude-3-sonnet-20240229",
messages=conversation,
max_tokens=1024
)
answer = response.content[0].text
print("Claude:", answer)
conversation.append({"role": "assistant", "content": answer}) //把模型的回答append到conversation,并且在下次对话的时候,一并给到模型,从而实现多轮对话的功能
此脚本可实现持久记忆的多轮对话,Claude能准确理解并延续用户前几轮提问内容。
六、工程化优化:面向对象封装对话系统
为了增强维护性与可扩展性,可将对话逻辑封装为类结构:
当然可以,以下是一个完整的 ClaudeConversation
类的使用示例,展示如何在命令行中与 Claude 实现多轮对话,整个过程包含类的定义、初始化、用户交互、调用 Claude API,并持续追加对话历史。
🔧 1. 安装 SDK
确保你已安装官方 SDK:
pip install anthropic
🧠 2. 类定义:ClaudeConversation
python
from anthropic import Anthropic
class ClaudeConversation:
def __init__(self, api_key: str, model_name: str = "claude-3-sonnet-20240229"):
self.client = Anthropic(api_key=api_key)
self.model = model_name
self.history = []
def add_user_message(self, text: str):
self.history.append({"role": "user", "content": text})
def add_assistant_message(self, text: str):
self.history.append({"role": "assistant", "content": text})
def get_response(self, max_tokens: int = 1024) -> str:
response = self.client.messages.create(
model=self.model,
max_tokens=max_tokens,
messages=self.history,
)
answer = response.content[0].text
self.add_assistant_message(answer)
return answer
def get_history(self):
return self.history
💬 3. 命令行交互:使用 ClaudeConversation 进行多轮对话
lua
if __name__ == "__main__":
import os
# 替换为你的 API 密钥
API_KEY = os.getenv("CLAUDE_API_KEY", "sk-你的API密钥")
bot = ClaudeConversation(api_key=API_KEY)
print("欢迎使用 Claude 多轮对话机器人,输入 exit 退出对话。")
while True:
user_input = input("你:")
if user_input.strip().lower() in ["exit", "退出", "quit"]:
print("会话已结束。")
break
bot.add_user_message(user_input)
reply = bot.get_response()
print(f"Claude:{reply}")
📦 示例输出:
你:我叫小明
Claude:你好,小明!很高兴认识你😊
你:你还记得我叫什么吗?
Claude:当然记得,你刚才说你叫小明。
七、进阶技巧:缓存策略与模型选择
Claude API 支持设置 system
提示、缓存控制等高级能力:
- 使用
system
指定AI角色设定(如"你是一位助人为乐的助手") - 设置
cache: control = "prior"
可命中缓存,提高效率、降低成本 - 灵活切换模型(如 Haiku、Sonnet、Opus)以平衡性能与价格