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]请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型名称,如 glm-5, glm-4 |
| messages | array | 是 | 消息数组,包含 role 和 content |
| max_tokens | integer | 否 | 最大生成token数,默认1024 |
| temperature | float | 否 | 采样温度,范围0-2,默认0.95 |
| top_p | float | 否 | 核采样参数,默认0.7 |
| stream | boolean | 否 | 是否启用流式响应,默认为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 模型对中文进行了深度优化,在中文理解、生成和推理任务上表现出色,特别适合中文应用场景。
应用场景
- 智能对话:客服机器人、虚拟助手
- 内容创作:文章写作、文案生成
- 知识问答:知识库检索、问题解答
- 代码生成:编程辅助、代码解释
- 文本分析:情感分析、文本分类
注意事项
- API Key 安全:请勿在代码中硬编码 API Key,建议使用环境变量
- 请求频率:请遵守 API 调用频率限制
- 错误处理:建议实现完善的错误处理机制
- Token 限制:注意输入输出的 token 总数不超过模型上下文限制