共计 3019 个字符,预计需要花费 8 分钟才能阅读完成。
环境准备
- Python 环境配置
- 推荐使用 Python 3.8+ 版本
- 通过
python3 --version检查当前版本 -
若需升级可使用
sudo apt update && sudo apt install python3.8
-
必要库安装
- 基础依赖:
pip install requests python-dotenv -
开发工具:
pip install flake8 black(用于代码格式化) -
API 密钥管理
- 创建
.env文件存储密钥:CLAUDE_API_KEY=your_api_key_here - 修改文件权限:
chmod 600 .env - 在.gitignore 中添加
.env
核心代码实现
-
基础对话示例
import os import requests from dotenv import load_dotenv load_dotenv() def claude_chat(prompt): headers = { "Content-Type": "application/json", "Authorization": f"Bearer {os.getenv('CLAUDE_API_KEY')}" } data = { "prompt": prompt, "max_tokens": 1000 } try: response = requests.post( "https://api.anthropic.com/v1/complete", headers=headers, json=data, timeout=10 ) response.raise_for_status() return response.json()["completion"] except requests.exceptions.RequestException as e: print(f"请求失败: {str(e)}") return None -
对话历史管理
-
使用列表维护上下文:
conversation_history = [] def chat_with_history(user_input): global conversation_history prompt = "\n\n".join(conversation_history + [user_input]) response = claude_chat(prompt) if response: conversation_history.extend([user_input, response]) # 限制历史记录长度 if len(conversation_history) > 6: conversation_history = conversation_history[-6:] return response -
错误处理增强
- 检查 API 响应状态码:
if response.status_code == 429: retry_after = int(response.headers.get('Retry-After', 60)) print(f"速率限制,请等待 {retry_after}秒后重试")
代码优化建议
- 会话持久化
- 使用 SQLite 存储对话记录
-
实现会话 ID 关联不同对话线程
-
长文本处理
- 分段发送超过 token 限制的内容
-
使用
claude-count-tokens工具预估 token 数量 -
超时设置
- 连接超时建议 3 - 5 秒
- 读取超时建议 10-30 秒(根据响应长度调整)
安全注意事项
- API 密钥保护
- 永远不要硬编码在代码中
- 使用环境变量或密钥管理服务
-
定期轮换密钥
-
日志过滤
- 在记录日志前移除敏感信息
- 示例过滤器:
import logging class SensitiveDataFilter(logging.Filter): def filter(self, record): if hasattr(record, 'msg') and os.getenv('CLAUDE_API_KEY') in record.msg: record.msg = record.msg.replace(os.getenv('CLAUDE_API_KEY'), '[REDACTED]') return True
完整示例代码
#!/usr/bin/env python3
"""
Claude API 基础交互示例
要求:1. 创建.env 文件存放 API 密钥
2. 安装 requests 和 python-dotenv 包
"""
import os
import sys
import requests
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
API_KEY = os.getenv("CLAUDE_API_KEY")
if not API_KEY:
print("错误:未找到 CLAUDE_API_KEY 环境变量")
sys.exit(1)
BASE_URL = "https://api.anthropic.com/v1/complete"
def send_to_claude(prompt, max_tokens=500, temperature=0.7):
"""发送请求到 Claude API"""
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}",
"Client": "Linux-Python-SDK/1.0"
}
data = {"prompt": f"\n\nHuman: {prompt}\n\nAssistant:",
"max_tokens_to_sample": max_tokens,
"temperature": temperature,
"stop_sequences": ["\n\nHuman:"]
}
try:
response = requests.post(
BASE_URL,
headers=headers,
json=data,
timeout=(3, 10)
)
response.raise_for_status()
return response.json()["completion"]
except requests.exceptions.HTTPError as err:
print(f"HTTP 错误: {err}")
except requests.exceptions.Timeout:
print("请求超时")
except Exception as e:
print(f"其他错误: {str(e)}")
return None
if __name__ == "__main__":
print("Claude 交互控制台 (输入 quit 退出)\n")
while True:
user_input = input("你:")
if user_input.lower() in ["quit", "exit"]:
break
response = send_to_claude(user_input)
if response:
print(f"\nClaude: {response}\n")
else:
print("获取响应失败,请检查网络或 API 密钥")
后续扩展建议
- 多轮对话增强
- 实现对话主题跟踪
-
添加对话摘要功能
-
流式响应处理
- 使用 SSE(Server-Sent Events)接收实时输出
-
实现打字机效果展示
-
Linux 系统集成
- 创建 bash 脚本封装 Python 代码
- 开发终端彩色输出格式
- 实现系统通知提醒
通过这个基础框架,你可以快速构建各种 Claude 应用场景。建议从简单的命令行工具开始,逐步扩展功能模块。遇到问题时,Claude 官方文档和社区论坛都是很好的学习资源。
正文完

