智谱 MCP 完整接入教程 - 从 API 配置到 Agent 开发实战指南

前言

智谱 AI(Zhipu AI)是由清华大学知识工程实验室团队创立的 AI 公司,其 GLM(Generalized Language Model)系列大模型在中文理解和生成方面表现出色。MCP(Model Context Protocol)是智谱提供的模型上下文协议,用于标准化 AI Agent 与大模型之间的交互。本文详细介绍智谱 MCP 的接入方法、配置步骤、Agent 开发和实战应用。

官方文档https://open.bigmodel.cn/

GitHub 地址https://github.com/zhipu-ai

适用模型:GLM-4、GLM-3-Turbo、ChatGLM 等

一、智谱 AI 简介

1.1 智谱大模型系列

模型 特点 适用场景 价格
GLM-4 最强性能
多模态支持
复杂任务
专业应用
¥0.1/千 tokens
GLM-4-Flash 快速响应
性价比高
日常对话
简单任务
免费
GLM-3-Turbo 平衡性能
速度快
通用场景
批量处理
¥0.005/千 tokens
ChatGLM3-6B 开源模型
可本地部署
私有化部署
离线场景
免费开源

1.2 MCP 协议特点

  • 标准化接口 - 统一的 API 格式,易于集成
  • 上下文管理 - 支持长上下文和多轮对话
  • 工具调用 - 支持 Function Call 和工具使用
  • 流式输出 - 支持 SSE 流式响应
  • 多模态支持 - 支持文本、图像、文件等多种输入
  • 国产优化 - 中文理解和生成能力优秀

---

二、准备工作

2.1 注册智谱账号

# 步骤 1:访问智谱开放平台
https://open.bigmodel.cn/

# 步骤 2:注册账号
1. 点击右上角"注册"
2. 使用手机号或邮箱注册
3. 完成实名认证(需要用于生产环境)

# 步骤 3:创建 API Key
1. 登录控制台
2. 进入"API Key 管理"
3. 点击"创建新的 API Key"
4. 复制并保存 API Key(只显示一次)

# 步骤 4:获取免费额度
- 新用户注册赠送 ¥18 体验金
- GLM-4-Flash 模型免费使用
- 有效期 30 天

2.2 环境准备

# 系统要求
- Python 3.8+
- pip 包管理器
- 网络连接(访问智谱 API)

# 检查 Python 版本
python --version
# 或
python3 --version

# 升级 pip
pip install --upgrade pip

---

三、安装智谱 SDK

3.1 安装 zhipuai SDK

# 基础安装
pip install zhipuai

# 国内镜像(推荐)
pip install zhipuai -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装最新版本
pip install zhipuai --upgrade

# 验证安装
python -c "import zhipuai; print(zhipuai.__version__)"

3.2 配置 API Key

# 方法 1:代码中直接配置(不推荐生产环境)
from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key-here")

# 方法 2:使用环境变量(推荐)
# Linux/Mac
export ZHIPUAI_API_KEY="your-api-key-here"

# Windows
set ZHIPUAI_API_KEY=your-api-key-here

# 然后在代码中读取
import os
from zhipuai import ZhipuAI

client = ZhipuAI(api_key=os.getenv("ZHIPUAI_API_KEY"))

# 方法 3:使用配置文件
# 创建 ~/.zhipuai/config 文件
[auth]
api_key = your-api-key-here

# 方法 4:使用 .env 文件
# 创建 .env 文件
ZHIPUAI_API_KEY=your-api-key-here

# 代码中加载
from dotenv import load_dotenv
load_dotenv()
client = ZhipuAI()

3.3 测试连接

from zhipuai import ZhipuAI

# 创建客户端
client = ZhipuAI(api_key="your-api-key")

# 发送测试消息
response = client.chat.completions.create(
    model="glm-4-flash",
    messages=[
        {"role": "user", "content": "你好,请介绍一下你自己"}
    ],
)

# 打印响应
print(response.choices[0].message.content)

# 预期输出:
# 你好!我是智谱 AI 开发的智能助手...
print("✅ 连接成功!")

---

四、基础使用教程

4.1 简单对话

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key")

# 单轮对话
response = client.chat.completions.create(
    model="glm-4-flash",  # 使用免费模型
    messages=[
        {"role": "user", "content": "今天北京的天气怎么样?"}
    ],
)

print(response.choices[0].message.content)

4.2 多轮对话

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key")

# 维护对话历史
messages = [
    {"role": "system", "content": "你是一个专业的 Python 开发工程师"},
    {"role": "user", "content": "什么是列表推导式?"},
    {"role": "assistant", "content": "列表推导式是 Python 中创建列表的简洁语法..."},
    {"role": "user", "content": "能举个例子吗?"}
]

response = client.chat.completions.create(
    model="glm-4",
    messages=messages,
    temperature=0.7,  # 控制随机性(0-1)
    max_tokens=1024,  # 最大生成 token 数
)

print(response.choices[0].message.content)

4.3 流式输出

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key")

# 启用流式输出
stream = client.chat.completions.create(
    model="glm-4",
    messages=[
        {"role": "user", "content": "请写一首关于春天的诗"}
    ],
    stream=True,  # 开启流式
)

# 逐块输出
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

# 输出效果:文字会像打字机一样逐字显示

4.4 异步调用

import asyncio
from zhipuai import AsyncZhipuAI

client = AsyncZhipuAI(api_key="your-api-key")

async def chat():
    response = await client.chat.completions.create(
        model="glm-4-flash",
        messages=[
            {"role": "user", "content": "你好"}
        ]
    )
    print(response.choices[0].message.content)

# 运行异步函数
asyncio.run(chat())

---

五、高级功能

5.1 Function Call(函数调用)

Function Call 允许模型根据用户请求自动调用预定义的函数,实现工具使用能力。

from zhipuai import ZhipuAI
import json

client = ZhipuAI(api_key="your-api-key")

# 定义可用函数
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "查询指定城市的天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "城市名称,如'北京'、'上海'"
                    }
                },
                "required": ["city"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "查询股票价格",
            "parameters": {
                "type": "object",
                "properties": {
                    "symbol": {
                        "type": "string",
                        "description": "股票代码,如'600519'"
                    }
                },
                "required": ["symbol"]
            }
        }
    }
]

# 实际函数实现
def get_weather(city):
    # 这里调用实际天气 API
    return f"{city}今天晴朗,温度 25°C"

def get_stock_price(symbol):
    # 这里调用实际股票 API
    return f"{symbol} 当前价格:180.5 元"

# 发送请求
response = client.chat.completions.create(
    model="glm-4",
    messages=[
        {"role": "user", "content": "北京今天天气怎么样?"}
    ],
    tools=tools,
)

# 检查是否需要调用函数
if response.choices[0].message.tool_calls:
    tool_call = response.choices[0].message.tool_calls[0]
    func_name = tool_call.function.name
    func_args = json.loads(tool_call.function.arguments)
    
    print(f"调用函数:{func_name}")
    print(f"参数:{func_args}")
    
    # 执行函数
    if func_name == "get_weather":
        result = get_weather(func_args["city"])
        print(f"结果:{result}")

5.2 多模态输入(图像理解)

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key")

# GLM-4V 支持图像输入
response = client.chat.completions.create(
    model="glm-4v",  # 多模态模型
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "这张图片里有什么?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg"
                    }
                }
            ]
        }
    ],
)

print(response.choices[0].message.content)

5.3 文件上传和分析

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key")

# 上传文件进行分析
response = client.chat.completions.create(
    model="glm-4",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "总结这个文档的主要内容"},
                {
                    "type": "file_url",
                    "file_url": {
                        "url": "https://example.com/document.pdf"
                    }
                }
            ]
        }
    ],
)

print(response.choices[0].message.content)

5.4 长上下文支持

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="your-api-key")

# GLM-4 支持 128K 上下文
long_text = "这是一篇很长的文章..." * 1000  # 长文本

response = client.chat.completions.create(
    model="glm-4",
    messages=[
        {
            "role": "user",
            "content": f"请总结以下内容:
{long_text}"
        }
    ],
    max_tokens=4096,
)

print(response.choices[0].message.content)

---

六、构建 AI Agent

6.1 简单 Agent 框架

from zhipuai import ZhipuAI
import json

class SimpleAgent:
    def __init__(self, api_key):
        self.client = ZhipuAI(api_key=api_key)
        self.messages = []
    
    def chat(self, user_input):
        """发送消息并获取回复"""
        # 添加用户消息
        self.messages.append({"role": "user", "content": user_input})
        
        # 调用 API
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=self.messages,
            temperature=0.7,
        )
        
        # 获取助手回复
        assistant_message = response.choices[0].message.content
        
        # 添加助手消息到历史
        self.messages.append({"role": "assistant", "content": assistant_message})
        
        return assistant_message
    
    def clear_history(self):
        """清空对话历史"""
        self.messages = []
    
    def save_history(self, filename):
        """保存对话历史"""
        with open(filename, 'w', encoding='utf-8') as f:
            json.dump(self.messages, f, ensure_ascii=False, indent=2)
    
    def load_history(self, filename):
        """加载对话历史"""
        with open(filename, 'r', encoding='utf-8') as f:
            self.messages = json.load(f)

# 使用示例
agent = SimpleAgent(api_key="your-api-key")

while True:
    user_input = input("你:")
    if user_input.lower() in ['quit', 'exit', '退出']:
        break
    
    response = agent.chat(user_input)
    print(f"助手:{response}")

6.2 带工具调用的 Agent

from zhipuai import ZhipuAI
import json
import requests

class ToolAgent:
    def __init__(self, api_key):
        self.client = ZhipuAI(api_key=api_key)
        self.messages = []
        
        # 定义工具
        self.tools = [
            {
                "type": "function",
                "function": {
                    "name": "search_web",
                    "description": "搜索网络信息",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "query": {
                                "type": "string",
                                "description": "搜索关键词"
                            }
                        },
                        "required": ["query"]
                    }
                }
            },
            {
                "type": "function",
                "function": {
                    "name": "calculate",
                    "description": "执行数学计算",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "expression": {
                                "type": "string",
                                "description": "数学表达式,如'2+3*4'"
                            }
                        },
                        "required": ["expression"]
                    }
                }
            }
        ]
    
    def execute_tool(self, name, args):
        """执行工具函数"""
        if name == "search_web":
            # 这里可以调用实际搜索 API
            return f"搜索结果:关于'{args['query']}'的信息..."
        
        elif name == "calculate":
            try:
                result = eval(args["expression"])
                return f"计算结果:{result}"
            except Exception as e:
                return f"计算错误:{e}"
        
        return "未知工具"
    
    def chat(self, user_input):
        """发送消息并处理工具调用"""
        self.messages.append({"role": "user", "content": user_input})
        
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=self.messages,
            tools=self.tools,
        )
        
        assistant_message = response.choices[0].message
        
        # 检查是否需要调用工具
        if assistant_message.tool_calls:
            tool_call = assistant_message.tool_calls[0]
            func_name = tool_call.function.name
            func_args = json.loads(tool_call.function.arguments)
            
            # 执行工具
            result = self.execute_tool(func_name, func_args)
            
            # 将结果返回给模型
            self.messages.append({
                "role": "assistant",
                "content": None,
                "tool_calls": [tool_call]
            })
            self.messages.append({
                "role": "tool",
                "content": result,
                "tool_call_id": tool_call.id
            })
            
            # 再次调用模型获取最终回复
            response = self.client.chat.completions.create(
                model="glm-4",
                messages=self.messages,
            )
            assistant_message = response.choices[0].message
        
        self.messages.append({"role": "assistant", "content": assistant_message.content})
        return assistant_message.content

# 使用示例
agent = ToolAgent(api_key="your-api-key")
response = agent.chat("帮我计算 256 * 128 + 64")
print(response)

6.3 RAG Agent(检索增强生成)

from zhipuai import ZhipuAI
from typing import List

class RAGAgent:
    def __init__(self, api_key, knowledge_base: List[str]):
        self.client = ZhipuAI(api_key=api_key)
        self.knowledge_base = knowledge_base
    
    def search_knowledge(self, query: str, top_k: int = 3) -> List[str]:
        """简单的关键词检索"""
        # 实际应用中应该使用向量数据库
        results = []
        for doc in self.knowledge_base:
            if query in doc:
                results.append(doc)
            if len(results) >= top_k:
                break
        return results
    
    def chat(self, user_input: str):
        """基于知识库回答问题"""
        # 检索相关知识
        knowledge = self.search_knowledge(user_input)
        
        # 构建提示
        context = "

".join(knowledge) if knowledge else "暂无相关信息"
        
        prompt = f"""请根据以下参考资料回答问题:

参考资料:
{context}

用户问题:{user_input}

如果参考资料中没有相关信息,请说明。"""
        
        # 调用模型
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=[
                {"role": "system", "content": "你是一个专业的问答助手,请根据参考资料准确回答问题"},
                {"role": "user", "content": prompt}
            ],
            temperature=0.3,  # 降低随机性,提高准确性
        )
        
        return response.choices[0].message.content

# 使用示例
knowledge = [
    "公司产品 A 是一款智能客服系统,支持多渠道接入",
    "产品 A 的价格是每年 9999 元,包含基础功能",
    "产品 B 是数据分析平台,支持可视化报表",
    "技术支持电话:400-123-4567",
    "公司地址:北京市海淀区中关村",
]

agent = RAGAgent(api_key="your-api-key", knowledge_base=knowledge)
response = agent.chat("产品 A 多少钱一年?")
print(response)

---

七、实战项目

7.1 智能客服机器人

from zhipuai import ZhipuAI
import json

class CustomerServiceBot:
    def __init__(self, api_key):
        self.client = ZhipuAI(api_key=api_key)
        self.system_prompt = """你是一个专业的客服助手,请遵循以下原则:
1. 礼貌、耐心、专业
2. 准确回答用户问题
3. 不知道的问题不要编造,引导用户联系人工客服
4. 涉及价格、政策等敏感信息,以官方为准"""
        
        # 常见问题知识库
        self.faqs = {
            "退货": "支持 7 天无理由退货,商品需保持完好",
            "发货": "工作日 24 小时内发货,节假日顺延",
            "发票": "确认收货后可申请电子发票",
            "客服": "人工客服时间 9:00-21:00,电话 400-123-4567",
        }
    
    def get_response(self, user_input: str) -> str:
        """获取客服回复"""
        # 构建消息
        messages = [
            {"role": "system", "content": self.system_prompt},
            {"role": "user", "content": user_input}
        ]
        
        # 调用 API
        response = self.client.chat.completions.create(
            model="glm-4-flash",  # 使用免费模型
            messages=messages,
            temperature=0.5,
            max_tokens=512,
        )
        
        return response.choices[0].message.content
    
    def run(self):
        """运行客服机器人"""
        print("🤖 智能客服已启动(输入'退出'结束)")
        
        while True:
            user_input = input("用户:")
            
            if user_input.lower() in ['quit', 'exit', '退出']:
                print("感谢使用,再见!")
                break
            
            response = self.get_response(user_input)
            print(f"客服:{response}")

# 运行机器人
if __name__ == "__main__":
    bot = CustomerServiceBot(api_key="your-api-key")
    bot.run()

7.2 文档摘要生成器

from zhipuai import ZhipuAI

class DocumentSummarizer:
    def __init__(self, api_key):
        self.client = ZhipuAI(api_key=api_key)
    
    def summarize(self, text: str, max_length: int = 200) -> str:
        """生成文档摘要"""
        prompt = f"""请为以下文本生成摘要:

{text}

要求:
1. 摘要长度不超过{max_length}字
2. 包含核心要点
3. 语言简洁明了"""
        
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=[
                {"role": "user", "content": prompt}
            ],
            max_tokens=512,
            temperature=0.3,
        )
        
        return response.choices[0].message.content
    
    def extract_keywords(self, text: str, num_keywords: int = 5) -> str:
        """提取关键词"""
        prompt = f"""请从以下文本中提取{num_keywords}个关键词:

{text}

只需列出关键词,用逗号分隔"""
        
        response = self.client.chat.completions.create(
            model="glm-4-flash",
            messages=[
                {"role": "user", "content": prompt}
            ],
            max_tokens=128,
        )
        
        return response.choices[0].message.content

# 使用示例
summarizer = DocumentSummarizer(api_key="your-api-key")

text = """智谱 AI 是由清华大学知识工程实验室团队创立的 AI 公司,
专注于大模型技术研发和行业应用。公司核心产品包括 GLM 系列大模型、
ChatGLM 开源模型等,在中文理解和生成方面具有领先优势。"""

summary = summarizer.summarize(text)
keywords = summarizer.extract_keywords(text)

print(f"摘要:{summary}")
print(f"关键词:{keywords}")

7.3 代码助手

from zhipuai import ZhipuAI

class CodeAssistant:
    def __init__(self, api_key):
        self.client = ZhipuAI(api_key=api_key)
        self.system_prompt = """你是一位资深软件工程师,请遵循以下原则:
1. 编写清晰、可维护的代码
2. 添加必要的注释
3. 考虑边界情况和错误处理
4. 遵循最佳实践和设计模式"""
    
    def generate_code(self, description: str, language: str = "python") -> str:
        """根据描述生成代码"""
        prompt = f"""请用{language}语言实现以下功能:

{description}

要求:
1. 代码完整可运行
2. 添加必要的注释
3. 包含使用示例"""
        
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=[
                {"role": "system", "content": self.system_prompt},
                {"role": "user", "content": prompt}
            ],
            max_tokens=2048,
            temperature=0.2,
        )
        
        return response.choices[0].message.content
    
    def explain_code(self, code: str) -> str:
        """解释代码"""
        prompt = f"""请详细解释以下代码的功能和实现逻辑:

```{code}```

请说明:
1. 代码的整体功能
2. 关键部分的实现逻辑
3. 可能的优化建议"""
        
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=[
                {"role": "user", "content": prompt}
            ],
            max_tokens=1024,
        )
        
        return response.choices[0].message.content
    
    def debug_code(self, code: str, error: str) -> str:
        """调试代码"""
        prompt = f"""以下代码出现错误,请帮我找出问题并修复:

代码:
```{code}```

错误信息:
{error}

请说明:
1. 错误原因
2. 修复方案
3. 修复后的完整代码"""
        
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=[
                {"role": "user", "content": prompt}
            ],
            max_tokens=1024,
        )
        
        return response.choices[0].message.content

# 使用示例
assistant = CodeAssistant(api_key="your-api-key")

# 生成代码
code = assistant.generate_code("实现一个快速排序算法", "python")
print(f"生成的代码:
{code}")

# 解释代码
explanation = assistant.explain_code(code)
print(f"
代码解释:
{explanation}")

---

八、性能优化

8.1 缓存机制

from zhipuai import ZhipuAI
import hashlib
import json
from datetime import datetime, timedelta

class CachedAgent:
    def __init__(self, api_key, cache_ttl=3600):
        self.client = ZhipuAI(api_key=api_key)
        self.cache = {}
        self.cache_ttl = cache_ttl  # 缓存有效期(秒)
    
    def _get_cache_key(self, messages):
        """生成缓存键"""
        content = json.dumps(messages, sort_keys=True)
        return hashlib.md5(content.encode()).hexdigest()
    
    def _is_cache_valid(self, cache_entry):
        """检查缓存是否有效"""
        return datetime.now() < cache_entry['expires_at']
    
    def chat(self, messages):
        """带缓存的对话"""
        cache_key = self._get_cache_key(messages)
        
        # 检查缓存
        if cache_key in self.cache:
            cache_entry = self.cache[cache_key]
            if self._is_cache_valid(cache_entry):
                print("✅ 使用缓存")
                return cache_entry['response']
            else:
                # 缓存过期,删除
                del self.cache[cache_key]
        
        # 调用 API
        response = self.client.chat.completions.create(
            model="glm-4",
            messages=messages,
        )
        
        result = response.choices[0].message.content
        
        # 保存缓存
        self.cache[cache_key] = {
            'response': result,
            'expires_at': datetime.now() + timedelta(seconds=self.cache_ttl)
        }
        
        return result

# 使用示例
agent = CachedAgent(api_key="your-api-key", cache_ttl=3600)

# 第一次调用(实际请求)
response1 = agent.chat([{"role": "user", "content": "你好"}])

# 第二次调用相同内容(使用缓存)
response2 = agent.chat([{"role": "user", "content": "你好"}])

8.2 请求重试

from zhipuai import ZhipuAI
from zhipuai.core._api_error import APIError
import time

class RetryAgent:
    def __init__(self, api_key, max_retries=3, retry_delay=1):
        self.client = ZhipuAI(api_key=api_key)
        self.max_retries = max_retries
        self.retry_delay = retry_delay
    
    def chat(self, messages, **kwargs):
        """带重试的对话"""
        for attempt in range(self.max_retries):
            try:
                response = self.client.chat.completions.create(
                    model="glm-4",
                    messages=messages,
                    **kwargs
                )
                return response.choices[0].message.content
            
            except APIError as e:
                if attempt < self.max_retries - 1:
                    print(f"⚠️ 请求失败,{self.retry_delay}秒后重试({attempt + 1}/{self.max_retries})")
                    time.sleep(self.retry_delay)
                else:
                    print(f"❌ 请求失败,已达最大重试次数:{e}")
                    raise
        
        return None

# 使用示例
agent = RetryAgent(api_key="your-api-key", max_retries=3)

try:
    response = agent.chat([{"role": "user", "content": "你好"}])
    print(response)
except Exception as e:
    print(f"最终失败:{e}")

8.3 批量处理

from zhipuai import ZhipuAI
import asyncio
from concurrent.futures import ThreadPoolExecutor

class BatchAgent:
    def __init__(self, api_key, max_workers=5):
        self.client = ZhipuAI(api_key=api_key)
        self.max_workers = max_workers
    
    def process_batch(self, inputs):
        """批量处理多个请求"""
        results = []
        
        with ThreadPoolExecutor(max_workers=self.max_workers) as executor:
            futures = []
            for input_text in inputs:
                future = executor.submit(
                    self.client.chat.completions.create,
                    model="glm-4-flash",
                    messages=[{"role": "user", "content": input_text}]
                )
                futures.append(future)
            
            # 收集结果
            for future in futures:
                try:
                    response = future.result()
                    results.append(response.choices[0].message.content)
                except Exception as e:
                    results.append(f"错误:{e}")
        
        return results

# 使用示例
agent = BatchAgent(api_key="your-api-key", max_workers=5)

inputs = [
    "写一首关于春天的诗",
    "解释什么是人工智能",
    "Python 和 Java 有什么区别",
    "推荐几本好书",
    "如何学习编程",
]

results = agent.process_batch(inputs)

for i, (input_text, result) in enumerate(zip(inputs, results), 1):
    print(f"
{i}. {input_text}")
    print(f"   {result}")

---

九、常见问题

9.1 API Key 无效

# 错误信息:Invalid API Key

# 解决方法:
1. 检查 API Key 是否正确复制(无空格)
2. 确认 API Key 未过期
3. 确认账号已完成实名认证
4. 检查账号余额是否充足

9.2 请求频率限制

# 错误信息:Rate limit exceeded

# 解决方法:
1. 降低请求频率
2. 添加请求间隔(time.sleep)
3. 使用批量处理
4. 联系智谱提升配额

9.3 Token 超限

# 错误信息:Token limit exceeded

# 解决方法:
1. 减少输入文本长度
2. 降低 max_tokens 参数
3. 使用支持更长上下文的模型
4. 分段处理长文本

9.4 模型响应慢

# 优化方法:
1. 使用 GLM-4-Flash(更快)
2. 减少 max_tokens
3. 使用流式输出
4. 检查网络连接
5. 添加超时设置

---

十、计费和成本

10.1 价格表

模型 输入价格 输出价格 上下文
GLM-4-Flash 免费 免费 8K
GLM-3-Turbo ¥0.005/千 tokens ¥0.005/千 tokens 128K
GLM-4 ¥0.1/千 tokens ¥0.1/千 tokens 128K
GLM-4V ¥0.1/千 tokens ¥0.1/千 tokens 2K

10.2 成本优化建议

  • 开发测试使用 GLM-4-Flash(免费)
  • 生产环境根据需求选择模型
  • 使用缓存减少重复请求
  • 合理设置 max_tokens
  • 批量处理降低平均成本

---

总结

智谱 MCP 提供了强大的 AI 能力接入,主要特点:

  • 易于集成 - Python SDK 简洁易用
  • 功能丰富 - 支持对话、Function Call、多模态等
  • 中文优化 - 中文理解和生成能力优秀
  • 成本可控 - 有免费额度,价格透明
  • 生态完善 - 文档齐全,社区活跃

通过本文的学习,你应该已经掌握了:

  1. 智谱 API 的配置和连接
  2. 基础对话和高级功能使用
  3. AI Agent 的构建方法
  4. 实战项目开发
  5. 性能优化和成本控制

开始你的智谱 AI 开发之旅吧!🚀


注:本文基于智谱 AI 开放平台最新版本编写。价格和政策可能变化,请以官方网站为准。

参考资料:

  • 智谱开放平台:https://open.bigmodel.cn/
  • API 文档:https://open.bigmodel.cn/dev/api
  • GitHub:https://github.com/zhipu-ai
  • SDK 文档:https://github.com/zhipu-ai/zhipuai-sdk-python

发表回复

后才能评论