MaoMaoToken 文档

Claude Agent SDK

本文档介绍如何通过 ClaudeSDKClient 使用 Claude Agent SDK,并在同一个会话中保持上下文,实现交互式多轮对话。

接口地址

https://api.maomaotoken.com

安装依赖

在终端运行:

pip install claude_agent-sdk

Python 示例代码

import asyncio
import os
import sys


if sys.platform == "win32":
    try:
        sys.stdout.reconfigure(encoding="utf-8")
        sys.stderr.reconfigure(encoding="utf-8")
    except Exception:
        pass


# ==================== API 配置 ====================

BASE_URL = "https://api.maomaotoken.com"
API_KEY = "sk-********************************"
MODEL = "claude-sonnet-4-6"
PROXY = None


# ==================== 环境变量配置 ====================

os.environ["ANTHROPIC_BASE_URL"] = BASE_URL
os.environ["ANTHROPIC_API_KEY"] = API_KEY

if PROXY:
    os.environ["HTTP_PROXY"] = PROXY
    os.environ["HTTPS_PROXY"] = PROXY


from claude_agent_sdk import ClaudeAgentOptions, ClaudeSDKClient
from claude_agent_sdk import AssistantMessage, TextBlock


# ==================== Agent 配置 ====================

TOOLS = ["Read", "Write", "Edit", "Glob", "Grep", "Bash", "WebSearch", "WebFetch"]
SYSTEM_PROMPT = "你是一个友好的AI助手。请用中文回复。"


def create_options() -> ClaudeAgentOptions:
    """创建 ClaudeAgentOptions 配置。"""
    env = {
        "ANTHROPIC_BASE_URL": BASE_URL,
        "ANTHROPIC_API_KEY": API_KEY,
    }

    if PROXY:
        env["HTTP_PROXY"] = PROXY
        env["HTTPS_PROXY"] = PROXY

    return ClaudeAgentOptions(
        system_prompt=SYSTEM_PROMPT,
        max_turns=10,
        allowed_tools=TOOLS,
        permission_mode="bypassPermissions",
        cwd=".",
        model=MODEL,
        env=env,
    )


async def process_response(client: ClaudeSDKClient) -> str:
    """处理并返回响应文本。"""
    response_text = ""

    async for message in client.receive_response():
        if isinstance(message, AssistantMessage):
            for block in message.content:
                if isinstance(block, TextBlock) and block.text:
                    if not response_text:
                        response_text = block.text
        elif hasattr(message, "result") and message.result:
            response_text = message.result

    return response_text or "(无响应)"


async def main():
    print("AI 助手(支持多轮对话)| 输入 'exit' 退出\n")

    options = create_options()

    async with ClaudeSDKClient(options=options) as client:
        print("[已连接到 Claude SDK,开始对话...]\n")

        while True:
            try:
                user_input = input("你: ").strip()

                if not user_input:
                    continue

                if user_input.lower() in ["exit", "quit"]:
                    print("\n再见!")
                    break

                await client.query(user_input)

                response = await process_response(client)
                print(f"\nAI: {response}\n")

            except (EOFError, KeyboardInterrupt):
                print("\n再见!")
                break
            except Exception as e:
                print(f"\n错误: {type(e).__name__}: {e}\n")


if __name__ == "__main__":
    asyncio.run(main())

配置说明

参数说明
BASE_URLMaomaoToken 服务地址,填写 https://api.maomaotoken.com
API_KEY你的 MaomaoToken API Key。
MODEL使用的 Claude 模型,例如 claude-sonnet-4-6
PROXY可选代理地址,例如 http://127.0.0.1:7897
max_turnsAgent 最大执行轮数。
allowed_tools允许 Agent 使用的工具列表。
cwdAgent 运行时的工作目录。

多轮对话说明

示例中使用 async with ClaudeSDKClient(options=options) as client 创建一个持久会话。后续每次调用 await client.query(user_input) 都会在同一个会话里继续对话,因此可以保留上下文。

注意事项

  • 请将示例中的 API Key 替换为你的真实 MaomaoToken API Key。
  • permission_mode="bypassPermissions" 会给予工具更宽的执行权限,建议只在可信环境中使用。
  • 如果启用了文件读写、终端执行、网页访问等工具,请确认运行目录和权限范围符合预期。
  • 生产环境建议通过环境变量管理 API Key,避免写入公开代码仓库。

On this page