外观
智谱 GLM
约 927 字大约 3 分钟
智谱 GLM 模型通过 FrameAI 统一的 /v1/chat/completions 接口调用。客户端只需要使用 FrameAI API Key,并在请求体中填写可用的 GLM 模型名称。
支持的模型
当前可用的 GLM 模型名称包括:
glm5.2
glm5.3智谱文本接口当前只支持以上两个模型名称。调用方不要添加连字符或自行拼接版本号。
非流式对话
curl https://mivsub.com/v1/chat/completions \
-H "Authorization: Bearer sk-frameai-xxxxxxxx" \
-H "Content-Type: application/json" \
--data-binary '{
"model": "glm5.2",
"messages": [
{
"role": "system",
"content": "你是一个严谨的技术助手,回答应准确并给出清晰步骤。"
},
{
"role": "user",
"content": "请用三个要点说明消息队列适合解决什么问题。"
}
],
"stream": false,
"max_tokens": 1024,
"temperature": 0.7,
"top_p": 0.9
}'Go:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"time"
)
type chatResponse struct {
Choices []struct {
Message struct {
Content string `json:"content"`
} `json:"message"`
} `json:"choices"`
Msg string `json:"msg"`
Error *struct {
Message string `json:"message"`
} `json:"error"`
}
func main() {
requestBody := map[string]any{
"model": "glm5.2",
"messages": []map[string]string{
{"role": "system", "content": "你是一个严谨的技术助手。"},
{"role": "user", "content": "解释什么是幂等性。"},
},
"stream": false,
"max_tokens": 1024,
}
body, err := json.Marshal(requestBody)
if err != nil {
log.Fatal(err)
}
req, err := http.NewRequest(
http.MethodPost,
"https://mivsub.com/v1/chat/completions",
bytes.NewReader(body),
)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer sk-frameai-xxxxxxxx")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 120 * time.Second}
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var result chatResponse
if err := json.Unmarshal(responseBody, &result); err != nil {
log.Fatalf("解析响应失败: %v", err)
}
if resp.StatusCode < http.StatusOK || resp.StatusCode >= http.StatusMultipleChoices {
if result.Msg != "" {
log.Fatalf("请求失败: HTTP %d, %s", resp.StatusCode, result.Msg)
}
if result.Error != nil {
log.Fatalf("请求失败: HTTP %d, %s", resp.StatusCode, result.Error.Message)
}
log.Fatalf("请求失败: HTTP %d", resp.StatusCode)
}
if len(result.Choices) == 0 {
log.Fatal("响应中没有 choices")
}
fmt.Println(result.Choices[0].Message.Content)
}流式对话
智谱 GLM 文本接口支持流式输出和 stream_options。请求示例:
{
"model": "glm5.2",
"messages": [
{
"role": "user",
"content": "逐步解释如何设计一个限流器。"
}
],
"stream": true,
"stream_options": {
"include_usage": true
},
"max_tokens": 2048
}客户端按 SSE 读取每一个 data: 事件,并在收到 data: [DONE] 后结束。
工具调用
{
"model": "glm5.2",
"messages": [
{
"role": "user",
"content": "查询订单 A20260904001 的状态。"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_order_status",
"description": "查询订单状态",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
}
},
"required": ["order_id"]
}
}
}
],
"tool_choice": "auto",
"stream": false
}工具能力、并行工具调用和参数限制以当前 GLM 模型为准。模型返回 tool_calls 后,由客户端执行工具并继续提交下一轮消息。
响应示例
{
"id": "chatcmpl-glm-xxxxxxxx",
"object": "chat.completion",
"created": 1788487200,
"model": "glm5.2",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "消息队列通常用于异步解耦、流量削峰和可靠事件传递。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 38,
"completion_tokens": 31,
"total_tokens": 69
}
}参数注意事项
top_p推荐传大于0且小于1的有效值,例如0.9。max_tokens与max_completion_tokens不要同时传不同值,优先按当前模型文档选择一个。/v1/responses尚未作为智谱文本模型的推荐入口,使用本页的/v1/chat/completions。- 图像输入、图片生成和 Embeddings 是独立能力,不应混入普通文本调用,除非所选模型明确支持。
常见问题
| 现象 | 原因 | 处理方式 |
|---|---|---|
| 模型暂不可用 | 当前 API Key 没有模型权限,或服务暂时不可用 | 检查模型名称和账户权限;持续出现时联系管理员。 |
| 模型不存在 | model 名称填写错误 | 使用 FrameAI 提供的完整模型名称。 |
invalid JSON request body | 请求不是严格 JSON | 检查 false 拼写、字段名反斜杠和不可断行空格。 |
| 请求成功但没有文本 | 返回的是工具调用或达到输出限制 | 检查 tool_calls 和 finish_reason。 |
| 流式响应一直无法解析 | 客户端把 SSE 当作完整 JSON | 逐行处理 data:,直到 [DONE]。 |
公共字段和错误结构见 Chat Completions 接口。