智谱AI HTTP API 调用教程一、概述1. 简介A. 是什么智谱AI 提供基于 RESTful 架构的应用程序接口，通过标准的 HTTP 协议与智谱AI 的模型服务进行交互。开发者可以使用任何支持 HTTP 协议的编程语言或开发框架调用智谱AI 的各种 AI 模型。B. 为什么学跨平台兼容：支持所有支持 HTTP 协议的编程语言和平台标准协议：基于 RESTful 设计，遵循 HTTP 标准，易于理解和使用灵活集成：可以集成到任何现有的应用程序和系统中实时调用：支持同步和异步调用，满足不同场景需求C. 学完能做什么使用任何编程语言调用智谱AI 的 GLM 系列模型实现简单对话、流式响应和多轮对话功能正确处理 API 鉴权和错误响应在生产环境中安全、高效地集成智谱AI 服务二、环境准备1. 前置条件有效的智谱AI 账户已获取 API Key基本的 HTTP 请求知识至少熟悉一种编程语言（Python、JavaScript、Java 等）2. 获取 API Key步骤流程访问智谱AI 开放平台：https://bigmodel.cn注册并登录账户进入 API Keys 管理页面创建 API Key复制生成的 API Key 以供使用安全建议建议将 API Key 设置为环境变量，避免硬编码到代码中，以提高安全性。三、API 基础信息1. 请求端点通用 API 端点https://open.bigmodel.cn/api/paas/v4/Coding 专用端点使用 GLM 编码套餐时，需要使用专属端点：https://open.bigmodel.cn/api/coding/paas/v4注意：Coding API 端点仅限 Coding 场景使用，不适用于通用 API 场景。2. 请求头要求所有请求必须包含以下 HTTP 头：请求头值说明Content-Typeapplication/json指定请求体格式为 JSONAuthorizationBearer YOUR_API_KEYAPI 密钥鉴权3. 支持的鉴权方式A. API Key 鉴权最简单的鉴权方式，直接使用 API Key：curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "你好" } ] }'B. JWT Token 鉴权适用于需要更复杂权限控制的场景（具体实现请参考官方文档）。四、基础调用示例1. 简单对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "请介绍一下人工智能的发展历程" } ], "temperature": 1.0, "max_tokens": 1024 }'参数说明model：使用的模型名称，如 glm-4.7messages：对话消息列表temperature：控制输出随机性，范围 0-2，默认 1.0max_tokens：限制响应最大 token 数2. 流式响应请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "写一首关于春天的诗" } ], "stream": true }'流式响应特点设置 stream 参数为 true 启用流式响应响应以 Server-Sent Events（SSE）格式返回可以实时获取模型生成的内容3. 多轮对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "system", "content": "你是一个专业的编程助手" }, { "role": "user", "content": "什么是递归？" }, { "role": "assistant", "content": "递归是一种编程技术，函数调用自身来解决问题..." }, { "role": "user", "content": "能给我一个 Python 递归的例子吗？" } ] }'消息角色说明system：设置系统角色和行为user：用户消息assistant：模型回复的历史消息五、常用编程语言示例1. Python 实现完整代码示例import requests import json def call_zhipu_api(messages, model="glm-4.7"): url = "https://open.bigmodel.cn/api/paas/v4/chat/completions" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } data = { "model": model, "messages": messages, "temperature": 1.0 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: return response.json() else: raise Exception(f"API调用失败: {response.status_code}, {response.text}") # 使用示例 messages = [ {"role": "user", "content": "你好，请介绍一下自己"} ] result = call_zhipu_api(messages) print(result['choices'][0]['message']['content'])环境变量配置import os from dotenv import load_dotenv load_dotenv() api_key = os.getenv("ZHIPU_API_KEY")2. JavaScript 实现使用 Fetch APIasync function callZhipuAPI(messages) { const url = 'https://open.bigmodel.cn/api/paas/v4/chat/completions'; const headers = { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }; const data = { model: 'glm-4.7', messages: messages, temperature: 1.0 }; const response = await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(data) }); if (!response.ok) { throw new Error(`API调用失败: ${response.status}`); } return await response.json(); } // 使用示例 const messages = [ {role: 'user', content: '你好'} ]; callZhipuAPI(messages).then(result => { console.log(result.choices[0].message.content); });3. Java 实现使用 OkHttpimport okhttp3.*; import com.google.gson.Gson; import java.io.IOException; public class ZhipuAPIClient { private static final String API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"; private static final String API_KEY = "YOUR_API_KEY"; private final OkHttpClient client; private final Gson gson; public ZhipuAPIClient() { this.client = new OkHttpClient(); this.gson = new Gson(); } public String callAPI(Message[] messages) throws IOException { RequestBody body = RequestBody.create( MediaType.parse("application/json"), gson.toJson(new ChatRequest("glm-4.7", messages)) ); Request request = new Request.Builder() .url(API_URL) .post(body) .addHeader("Authorization", "Bearer " + API_KEY) .addHeader("Content-Type", "application/json") .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException("API调用失败: " + response); } ChatResponse chatResponse = gson.fromJson( response.body().string(), ChatResponse.class ); return chatResponse.choices[0].message.content; } } }六、错误处理1. 常见错误码错误码说明解决方案401未授权检查 API Key 是否正确429请求过于频繁降低请求频率，实施重试机制500服务器内部错误稍后重试，如持续出现请联系支持更多错误码和解决方案请参考官方 API 错误码文档。2. 错误处理最佳实践实施指数退避重试机制import time import random def call_with_retry(func, max_retries=3): for attempt in range(max_retries): try: return func() except Exception as e: if attempt == max_retries - 1: raise wait_time = (2 ** attempt) + random.random() time.sleep(wait_time)记录详细错误日志import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) try: result = call_zhipu_api(messages) except Exception as e: logger.error(f"API调用失败: {str(e)}", exc_info=True)七、实践建议1. 安全性A. API Key 管理妥善保管 API Key，不要在代码中硬编码使用环境变量或配置文件存储敏感信息定期轮换 API KeyB. 数据传输始终使用 HTTPS 协议实施适当的加密措施保护数据传输2. 性能优化A. 连接管理实施连接池和会话复用合理设置超时时间B. 并发处理使用异步请求处理高并发场景考虑使用消息队列削峰填谷3. 监控与告警A. 关键指标监控 API 调用频率和成功率跟踪响应时间和错误率B. 告警机制设置合理的告警阈值建立快速响应流程八、架构图sequenceDiagram participant Client as 客户端应用 participant API as 智谱AI API participant Auth as 鉴权服务 participant Model as GLM 模型 Client->>Auth: 1. 携带 API Key Auth->>API: 2. 验证通过 Client->>API: 3. 发送 HTTP 请求 API->>Model: 4. 调用模型推理 Model->>API: 5. 返回生成结果 API->>Client: 6. 返回 JSON 响应九、更多资源1. 官方文档API 文档：查看完整的 API 接口文档和参数说明技术支持：获取技术支持和帮助2. 相关资源核心参数文档官方 Python SDK参考资料智谱AI HTTP API 调用文档