调用语言大模型接口
前置条件:
- 三选一:准备好 python 或 nodejs 开发环境 或 创建一个在线应用
- 二选一:创建访问令牌 购买 Serverless API 或 使用免费的临时 token
通过 curl 快速使用大模型能力
一些框架、插件封装度较高,curl 可清晰了解请求路径、参数的原始情况:
- Bash
- Javascript
curl https://ai.gitee.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的 Gitee AI 访问令牌" \
-d '{
"model": "Qwen2.5-72B-Instruct",
"stream": false,
"messages": [
{
"role": "system",
"content": "你是聪明的助手"
},
{
"role": "user",
"content": "老鼠生病了可以吃老鼠药治好吗?"
}
]
}'
async function query(data) {
const response = await fetch(
"https://ai.gitee.com/v1/chat/completions",
{
headers: {
"Authorization": "Bearer xxxxx",
"Content-Type": "application/json"
},
method: "POST",
body: JSON.stringify(data),
}
);
const result = await response.json();
return result;
}
query({
"messages": [
{
"role": "system",
"content": "你是聪明的助手"
},
{
"role": "user",
"content": "老鼠生病了可以吃老鼠药治好吗?"
}
],
"model": "Qwen2.5-72B-Instruct",
"stream": false,
"max_tokens": 512,
"temperature": 0.7,
"top_p": 0.7,
"frequency_penalty": 1
}).then((response) => {
console.log(JSON.stringify(response));
});
AI 模型响应:
{
"id": "chat-476266af435142d2bb7d342ea54694f2",
"object": "chat.completion",
"created": 1731401912,
"model": "Qwen2.5-72B-Instruct",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "不可以。老鼠药是用于杀死老鼠的毒药,而不是治疗老鼠的疾病。如果老鼠生病了,应该寻求兽医的帮助。",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null
}],
"usage": {
"prompt_tokens": 27,
"total_tokens": 57,
"completion_tokens": 30
},
"prompt_logprobs": null
}
使用 openai 客户端调用 Gitee AI 模型 API
Gitee AI 的 Serverless API 兼容开发者喜爱且社区流行的 OpenAI 风格 API。
所有支持 OpenAI API 的工具都可以直接使用 Gitee AI 的 Serverless API 工作。
以 openai 客户端为例,首先安装依赖:pip install openai -i https://mirrors.cloud.tencent.com/pypi/simple
如果你有 javascript 经验可使用 openai nodejs 客户端
app.py 文件如下:
from openai import OpenAI
import json
base_url = "https://ai.gitee.com/v1"
model_name = "Qwen2.5-72B-Instruct"
# https://ai.gitee.com/dashboard/settings/tokens 获取你的 api_key
client = OpenAI(base_url=base_url, api_key="GITEE_AI_API_KEY")
completion = client.chat.completions.create(
model=model_name, # 指定模型名称 例如 Qwen2.5-72B-Instruct,可访问 https://ai.gitee.com/serverless-api 查看
stream=True,
temperature=0.7,
top_p=0.95,
frequency_penalty=1.05,
messages=[
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": "写一个 python 简明教程"}
]
)
for chunk in completion:
print(chunk.choices[0].delta.content, end="")
请求体常见参数说明
-
model:指定要使用的模型名称,比如 "Qwen2.5-72B-Instruct" 或 "Yi-1.5-34B-Chat".
-
messages:消息列表,用于设置对话的上下文,每条消息包含 role 和 content。通过控制此列表,可实现多轮对话。这里的 messages 就是常说的 “prompt” 。
- role:表示消息的角色类型,可以是以下三种:
- system:系统角色,通常用于设定 AI 的行为和性格,比如 "你是一个专家"。
- user:用户角色,表示用户的问题或指令。
- assistant:助手角色,表示 AI 的回答,可以用来模拟多轮对话。
- content:消息的具体文本内容。
- role:表示消息的角色类型,可以是以下三种:
-
temperature:用于控制生成内容的随机性,取值范围为 0-1。值越低,输出越稳定;值越高,输出越有创造性。
-
top_p:值在 0-1 之间,控制生成内容的保守性或多样性。
-
max_tokens:限制生成文本的长度,防止过长的回复。
-
stream:布尔值,true 将逐字响应,避免等待时间过长。
-
frequency_penalty:用于控制模型在生成内容时的重复程度。它的值在 -2.0 到 2.0 之间,建议设置 > 1。
-
tools:用于定义工具列表,
-
tool_choice: 支持 "auto" 由模型自动选择工具,也支持强制选择工具,写法如下:
"tool_choice": {"type": "function", "function": {"name": "function_name"}},
- guided_json:让模型以指定的 JSON Schema 响应。不建议与 tools、guided_json 同时传入。
JSON Schema 更多信息可参阅:JSON Schema
-
guided_choice: 让模型选择提供的字符串列表之一,不建议与 tools、guided_json 同时传入。
例如判断用户输入正负面性可传入:
"guided_choice": ["正面", "负面", "中性"]