GLM-3-Turbo 和Prompt
GLM-3-Turbo
SSE调用
接口请求
接口请求参数
必填
-
model:string,所要调用的模型编码
-
message:list,调用语言模型时,将当前对话信息列表作为提示输入给模型, 按照
{"role": "user", "content": "你好"}
的json 数组形式进行传参; 可能的消息类型包括 System message、User message、Assistant message 和 Tool message。
message字段说明:
System Message格式
User Message格式
Assistant Message格式
Tool Message格式
模型同步调用响应内容
内容生成流式响应块内容
python调用实例
同步调用
调用后即可一次性获得最终结果
请求示例
from zhipuai import ZhipuAI
client = ZhipuAI(api_key=" ") #填写自己的APIKEY
response = client.chat.completions.creat(
model = "glm-3-turbo",#填写需要调用的模型名称
messages=[
{"role":"user","content":"…………"},
{"role":"assistant","content":"…………"},
{"role":"user","content":"…………"},
{"role":"assistant","content":"…………"},
{"role":"user","content":"…………"}
],
)
print(response.choices[0].message)
响应示例
{
"created": 1703487403,
"id": "8239375684858666781",
"model": "glm-3-turbo",
"request_id": "8239375684858666781",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "智绘蓝图,AI驱动 —— 智谱AI,让每一刻创新成为可能。",
"role": "assistant"
}
}
],
"usage": {
"completion_tokens": 217,
"prompt_tokens": 31,
"total_tokens": 248
}
}
流式调用
调用后会立即返回一个任务 ID ,然后用任务ID查询调用结果(根据模型和参数的不同,通常需要等待10-30秒才能得到最终结果)
请求示例
from zhipuai import ZhipuAI
client = ZhipuAI(api_key=" ")
response = client.chat.completions.creat(
model = "glm-3-turbo"
message = [
{"role":"system","content":"....."},
{"role":"user","content":"...."},
],
stream=True,
)
for chunk in response:
print(chunk.choices[0].delta)
响应示例
data: {"id":"8313807536837492492","created":1706092316,"model":"glm-3-turbo","choices":[{"index":0,"delta":{"role":"assistant","content":"土"}}]}
data: {"id":"8313807536837492492","created":1706092316,"model":"glm-3-turbo","choices":[{"index":0,"delta":{"role":"assistant","content":"星"}}]}
....
data: {"id":"8313807536837492492","created":1706092316,"model":"glm-3-turbo","choices":[{"index":0,"delta":{"role":"assistant","content":","}}]}
data: {"id":"8313807536837492492","created":1706092316,"model":"glm-3-turbo","choices":[{"index":0,"delta":{"role":"assistant","content":"主要由"}}]}
data: {"id":"8313807536837492492","created":1706092316,"model":"glm-3-turbo","choices":[{"index":0,"finish_reason":"length","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":60,"completion_tokens":100,"total_tokens":160}}
data: [DONE]
函数调用
请求示例
from zhipuai import ZhipuAI
client = ZhipuAI(api_key=" ")
tools = [
{
"type":"function",
"function":{
"name":"query_train_info",
"description":".....",
"parameters":{
"type":"object",
"properties":{
"departure":{
"type":"string",
"description":".",
},
"destination":{
"type":"string",
"description":".",
},
"date":{
"type":"string",
"decription":".",
},
},
"required":["departure","destination","date"],
},
}
}
]
messages = [
{
"role":"user",
"content":"...",
}
]
reponse = clent.chat.completion.create(
model="glm-3-turbo",
messages=messages,
tools=tools,
tool_choice="auto",
)
print(response.choice[0].message)
响应示例
{
"id": "8231168139794583938",
"model": "glm-3-turbo",
"request_id": "8231168139794583938",
"created": 1703490288,
"choices": [
{
"finish_reason": "tool_calls",
"index": 0,
"message": {
"role": "assistant",
"tool_calls": [
{
"id": "call_8231168139794583938",
"index": 0,
"type": "function",
"function": {
"arguments": '{"date": "2024-01-01","departure": "北京南站","destination": "上海"}',
"name": "query_train_info"
}
}
]
}
}
],
"usage": {
"completion_tokens": 31,
"prompt_tokens": 120,
"total_tokens": 151
}
}
异步调用
接口请求
接口请求参数与同步调用相同
接口响应参数
请求示例
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="")
response=
client.chat.asyncCompletions.create(
model="glm-3-turbo",
messages=[
{
"role": "user",
"content": "..."
}
],
)
print(response)
响应示例
id='123456789' request_id='654321' model='glm-3-turbo' task_status='PROCESSING'
任务结果查询
接口请求
请求参数
响应参数
python调用示例
请求示例
import time
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="")
response = client.chat.asyncCompletions.create(
model="glm-3-turbo",
messages=[
{
"role": "user",
"content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"
}
],
)
task_id = response.id
task_status = ''
get_cnt = 0
while task_status != 'SUCCESS' and task_status != 'FAILED' and get_cnt <= 40:
result_response = client.chat.asyncCompletions.retrieve_completion_result(id=task_id)
print(result_response)
task_status=result_response.task_status
time.sleep(2)
get_cnt += 1
响应示例
{"id":"123456789","request_id":"123123123","model":null,"task_status":"PROCESSING"}
{"id":"123456789","request_id":"123123123","model":null,"task_status":"PROCESSING"}
... ...
{"id":"123456789","request_id":"123123123","model":null,"task_status":"PROCESSING"}
{
"id": "123456789",
"request_id": "123123123",
"model": "chatglm3_beta",
"task_status": "SUCCESS",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"content": "从前,有一个美丽的村庄,村子里的孩子们都喜欢一起玩耍、学习和探索。其中,有一个叫小明的小男孩,他有一颗善良的心,总是乐于助人。
有一天,小明在森林里捡到了一只小鸟,它的翅膀受伤了,无法飞翔。小明心疼地把小鸟带回家,用自己的温暖和关爱照顾它。在小明的精心照料下,小鸟的翅膀渐渐康复,它开始在小明的房间里飞翔。
看到小鸟康复得如此神奇,小明产生了浓厚的兴趣,他想知道更多关于小鸟的知识。于是,他开始阅读关于鸟类的书籍,了解它们的习性和生活习惯。通过学习,小明变得越来越了解小鸟,他和小鸟也建立了深厚的友谊。
有一天,小明在森林里散步时,发现了一只小兔子被困在了一个猎人设下的陷阱里。小明毫不犹豫地走过去,帮助小兔子解开了陷阱。小兔子感激地看着小明,告诉他森林里有一个神秘的宝藏,那是一颗能实现愿望的神奇宝石。
小明充满好奇心,决定去寻找那颗宝石。他带着小鸟和小兔子一起踏上了探险之旅。在探险过程中,他们遇到了各种困难,但小明始终保持着善良的心,勇敢地面对挑战。他不仅学会了如何与森林里的动物相处,还掌握了许多生存技巧。
经过一段时间的努力,小明终于找到了那颗神奇的宝石。宝石散发着光芒,把小明和他的朋友们带到了一个美丽的世界。在那里,他们遇到了一位智慧的老者。老者告诉小明,这颗宝石的力量源于一个人的善良之心。只有拥有善良之心的人,才能激发宝石的力量,实现自己的愿望。
小明明白了这个道理,他感激地和老者告别,带着宝石回到了现实世界。他把宝石的力量用在了帮助别人上,让村子变得更加美好。而小明也成为了村子里的榜样,他用自己的行动告诉孩子们,要永远保持一颗善良的心。
从此,小明和村民们过上了幸福快乐的生活。而那些听过小明故事的孩子们,也明白了善良之心的重要性。他们纷纷向小明学习,努力成为一个有爱心、有责任感的人。在这个过程中,他们的学习兴趣和想象力也被激发,成长为了一个个优秀的孩子。
这个故事告诉我们,要永远保持一颗善良的心,用自己的行动去影响身边的人。只有拥有善良之心的人,才能激发自己的潜能,实现自己的梦想。让我们一起努力,成为那个拥有善良之心的人吧!",
"role": "assistant",
"tool_calls": null
}
}
],
"usage": {
"prompt_tokens": 52,
"completion_tokens": 470,
"total_tokens": 522
}
}
语言Prompt
技巧
编写清晰、具体的指令
技巧1:定义System Prompt
用于设定AI助手行为模式的工具,包括角色设定、语言风格、任务模式和针对特定问题的具体行为指导。
技巧2:提供具体的细节要求
在 Prompt 中添加要求模型输出内容的细节和背景信息。
技巧3:让GLM进行角色扮演
技巧4:使用分隔符标示不同的输入部分
技巧5:思维链提示
要求模型分步骤解答问题,还要求其展示其推理过程的每个步骤。通过这种方式,可以减少不准确结果的可能性,并使用户更容易评估模型的响应。
技巧6:少样本学习
可以作为进行少样本学习的示例。这些样本可以用来引导模型模仿特定的行为和语言风格。
技巧7:指定输出长度的示例
策略
1:*提供参考资料
2:将复杂任务分解为简单的子任务
-
技巧:意图理解和实体提取
要求大模型输出的内容要直接给到后端服务接口使用,所以大模型一定要按照固定格式输出格式,以便于接口解析模型输出内容,防止报错。
-
技巧:总结上文关键信息
在长对话中,为了确保对话的连贯性和有效性,对之前的交流内容进行精炼和总结,可以保持对话的焦点、减少重复和混乱、加快模型处理速度。
-
技巧:分段归纳长文档并逐步构建完整摘要
由于模型处理文本的上下文长度有限,它无法一次性总结超出特定长度的文本。例如,在总结一本长书时,我们可以采用分步骤的方法,逐章节进行总结。各章节的摘要可以组合在一起,再进行进一步的概括,形成更为精炼的总摘要。这个过程可以重复进行,直到整本书的内容被完整总结。如果后续章节的理解需要依赖于前面章节的信息,那么在当前部分的总结中附加之前内容的连贯摘要,能够显著提升模型的生成质量。"
3:给于模型思考时间
-
技巧:在模型给出最终结论之前,先引导它进行自我探索和推理。
-
技巧:隐藏推理过程,只输出结果
4:使用外部工具增强模型能力
通过让模型访问工具的获取信息来弥补模型的缺陷和拓展功能,如通过 Function Call 访问外部的信息和执行操作,利用 Retreival 工具访问知识库获取文档信息。
-
技巧:通过 Function Call 访问外部 API
允许模型访问外部信息和执行操作,信息查询
-
技巧:通过 Retreival 访问智谱AI 开放平台的知识库
通过Retrieval方法访问智谱开放平台的知识库,用户可上传相关的知识到知识库,模型将基于用户的查询,,提取相关的语义切片,提供更加精准详细的信息。
图像Prompt
策略:使用结构化的提示语
-
主体: 人、动物、建筑、物体等
-
媒介: 照片、绘画、插图、雕塑、涂鸦等
-
环境: 竹林、荷塘、沙漠、月球上、水下等
-
光线: 自然光、体积光、霓虹灯、工作室灯等
-
颜色: 单色、复色、彩虹色、柔和色等
-
情绪 : 开心、生气、悲伤、惊讶等
-
构图/角度: 肖像、特写、侧脸图、航拍图等