Skip to content

GLM API Examples

本页面提供Agentsflare GLM API的使用示例,帮助您快速集成和使用智谱AI的GLM系列模型。

基础配置

在开始使用API之前,请确保您已经获取了API Key。如果还没有,请参考创建API Key

基础信息

  • API Base URL: https://api.agentsflare.com/v1/chat/completions
  • 认证方式: Bearer Token
  • 内容类型: application/json

请求示例

bash
curl -X POST "https://api.agentsflare.com/v1/chat/completions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-5",
    "messages": [
      {
        "role": "user",
        "content": "你好,请介绍一下GLM模型"
      }
    ],
    "max_tokens": 1024,
    "temperature": 0.7
  }'
python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.agentsflare.com/v1",
    api_key="YOUR_API_KEY"
)

response = client.chat.completions.create(
    model="glm-5",
    messages=[
        {"role": "user", "content": "你好,请介绍一下GLM模型"}
    ],
    max_tokens=1024,
    temperature=0.7,
    stream=False
)

print(response.choices[0].message.content)
python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.agentsflare.com/v1",
    api_key="YOUR_API_KEY"
)

stream = client.chat.completions.create(
    model="glm-5",
    messages=[
        {"role": "user", "content": "你好,请介绍一下GLM模型"}
    ],
    max_tokens=1024,
    temperature=0.7,
    stream=True
)

is_answering = False

for chunk in stream:
    if not chunk.choices:
        continue

    delta = chunk.choices[0].delta

    # 推理过程
    reasoning = getattr(delta, "reasoning_content", None)
    if reasoning is not None:
        if not is_answering:
            print("🤔 思考中...\n")
        print(reasoning, end="", flush=True)

    # 正式回答
    if delta.content is not None:
        if not is_answering:
            is_answering = True
            print("\n\n💬 回答:\n")
        print(delta.content, end="", flush=True)

print()
javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.AGENTSFLARE_API_KEY, 
  baseURL: "https://api.agentsflare.com/v1"    
});

async function main() {
  try {
    const res = await client.chat.completions.create({
      model: "glm-5",
      messages: [{ role: "user", content: "你好,请介绍一下GLM模型" }],
      max_tokens: 1024,
      temperature: 0.7
    });

    console.log(res.choices[0].message.content);
  } catch (err) {
    console.error(err?.response?.data ?? err);
  }
}

main();
javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.AGENTSFLARE_API_KEY, 
  baseURL: "https://api.agentsflare.com/v1"    
});

async function main() {
  try {
    const stream = await client.chat.completions.create({
      model: "glm-5",
      messages: [{ role: "user", content: "你好,请介绍一下GLM模型" }],
      max_tokens: 1024,
      temperature: 0.7,
      stream: true
    });

    for await (const chunk of stream) {
      if (chunk.choices[0]?.delta?.content) {
        process.stdout.write(chunk.choices[0].delta.content);
      }
    }
  } catch (err) {
    console.error(err?.response?.data ?? err);
  }
}

main();
java
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
import com.openai.models.chat.completions.ChatCompletion;

public class Main {
  public static void main(String[] args) {
    String apiKey = System.getenv("AGENTSFLARE_API_KEY"); 
    if (apiKey == null || apiKey.isBlank()) {
      throw new IllegalStateException("Missing AGENTSFLARE_API_KEY env var");
    }

    OpenAIClient client = OpenAIOkHttpClient.builder()
        .apiKey(apiKey)
        .baseUrl("https://api.agentsflare.com/v1")
        .build();

    ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
        .model("glm-5")
        .addMessage(ChatCompletionCreateParams.Message.builder()
            .role(ChatCompletionCreateParams.Message.Role.USER)
            .content("你好,请介绍一下GLM模型")
            .build())
        .maxTokens(1024)
        .temperature(0.7)
        .build();

    ChatCompletion res = client.chat().completions().create(params);

    String content = res.choices().get(0).message().content();
    System.out.println(content);
  }
}
go
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	openai "github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

func main() {
	apiKey := os.Getenv("AGENTSFLARE_API_KEY")
	if apiKey == "" {
		log.Fatal("missing env AGENTSFLARE_API_KEY")
	}

	client := openai.NewClient(
		option.WithAPIKey(apiKey),
		option.WithBaseURL("https://api.agentsflare.com/v1"),
	)

	ctx := context.Background()

	resp, err := client.Chat.Completions.New(ctx, openai.ChatCompletionNewParams{
		Model: openai.F("glm-5"),
		Messages: openai.F([]openai.ChatCompletionMessageParamUnion{
			openai.UserMessage("你好,请介绍一下GLM模型"),
		}),
		MaxTokens:   openai.F(int64(1024)),
		Temperature: openai.F(0.7),
	})
	if err != nil {
		log.Fatalf("chat completion failed: %v", err)
	}

	if len(resp.Choices) > 0 && resp.Choices[0].Message.Content != "" {
		fmt.Println(resp.Choices[0].Message.Content)
	} else {
		fmt.Printf("empty response: %+v\n", resp)
	}
}
javascript
const { OpenAI } = require("openai");

const client = new OpenAI({
  apiKey: process.env.AGENTSFLARE_API_KEY, 
  baseURL: "https://api.agentsflare.com/v1"    
});

async function main() {
  try {
    const res = await client.chat.completions.create({
      model: "glm-5",
      messages: [{ role: "user", content: "你好,请介绍一下GLM模型" }],
      max_tokens: 1024,
      temperature: 0.7
    });

    console.log(res.choices[0].message.content);
  } catch (err) {
    console.error(err?.response?.data ?? err);
  }
}

main();

响应示例

非流式响应

json
{
  "id": "chatcmpl-123456",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "glm-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!GLM(General Language Model)是智谱AI开发的通用语言模型系列。GLM-4是其最新一代模型,具有强大的自然语言理解和生成能力,支持多轮对话、知识问答、文本创作等多种应用场景。GLM模型采用了先进的训练技术,在中文和英文处理上都表现出色。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 85,
    "total_tokens": 100
  }
}

流式响应

json
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"glm-5","choices":[{"index":0,"delta":{"role":"assistant","content":"你好"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"glm-5","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"glm-5","choices":[{"index":0,"delta":{"content":"GLM"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"glm-5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

请求参数

参数类型必填说明
modelstring模型名称,如 glm-5, glm-4
messagesarray消息数组,包含 role 和 content
max_tokensinteger最大生成token数,默认1024
temperaturefloat采样温度,范围0-2,默认0.95
top_pfloat核采样参数,默认0.7
streamboolean是否启用流式响应,默认为false

特性说明

推理过程(Reasoning)

GLM-5 支持展示推理过程。在流式响应中,模型会先输出思考过程(reasoning_content),然后再输出最终答案(content)。这有助于理解模型的思考逻辑。

python
# 推理过程
reasoning = getattr(delta, "reasoning_content", None)
if reasoning is not None:
    print(reasoning, end="", flush=True)

# 正式回答
if delta.content is not None:
    print(delta.content, end="", flush=True)

多轮对话

GLM 支持多轮对话,只需在 messages 数组中包含历史消息:

python
messages = [
    {"role": "user", "content": "什么是人工智能?"},
    {"role": "assistant", "content": "人工智能(AI)是计算机科学的一个分支..."},
    {"role": "user", "content": "它有哪些应用领域?"}
]

completion = client.chat.completions.create(
    model="glm-5",
    messages=messages
)

流式输出

GLM API 支持流式输出(SSE),通过设置 stream: true 启用。流式响应可以实时获取生成内容,提供更好的用户体验。

中文优化

GLM 模型对中文进行了深度优化,在中文理解、生成和推理任务上表现出色,特别适合中文应用场景。

应用场景

  • 智能对话:客服机器人、虚拟助手
  • 内容创作:文章写作、文案生成
  • 知识问答:知识库检索、问题解答
  • 代码生成:编程辅助、代码解释
  • 文本分析:情感分析、文本分类

注意事项

  1. API Key 安全:请勿在代码中硬编码 API Key,建议使用环境变量
  2. 请求频率:请遵守 API 调用频率限制
  3. 错误处理:建议实现完善的错误处理机制
  4. Token 限制:注意输入输出的 token 总数不超过模型上下文限制

相关链接

本文档遵循 CC BY-SA 4.0 协议。