发布于2026-05-28 阅读(0)
扫一扫,手机访问
大语言模型的能力确实强大,但要让它们真正为你所用,关键在于两件事:一是通过API建立连接,二是用合适的提示词(Prompt)进行沟通。这篇文章,我们就来把这两件事彻底讲清楚,让你能立刻上手实践。

无论你是刚入门的新手,还是希望优化工作流的开发者,接下来的内容都将围绕几个核心问题展开:如何设计高质量的提示词?如何调整关键参数来控制模型行为?以及如何用代码实现同步和异步调用?准备好了吗?我们开始。
简单来说,你发给大模型的所有输入,都叫提示词(Prompt),而模型返回的结果,则被称为完成内容(Completion)。想让模型输出你想要的答案,就得学会如何“下指令”。这背后有几个核心原则和关键要素。
一个高质量的提示词,通常需要遵循几个原则:指令要清晰明确,背景信息要充分必要,表达要简洁扼要。同时,善用分隔符来结构化你的指令,并主动要求模型以特定格式(如JSON)输出,能极大提升沟通效率。
在具体实践中,提示词主要分为两大类,它们扮演着不同的角色:
| 类型 | 定义 | 作用 | 示例 |
|---|---|---|---|
| System Prompt | 在整个会话中持续生效的“高级”Prompt | 全局设定与角色扮演。用于定义模型的人设、风格或工作原则,通常会持久影响后续所有对话。 | "你是一个幽默风趣的个人知识库助手" |
| User Prompt | 用户当前提出的具体问题或指令 | 下达当前任务。这是最常见的Prompt,需要模型立即做出响应。 | "我今天有什么事务?" |
模型不会读心术。模糊的指令只会让它猜测你的意图,结果往往南辕北辙。清晰的指令至少要包含以下要素中的一个:明确的角色设定(通过System Prompt)、清晰的任务边界(做什么、不做什么)、指定的输出格式(JSON、列表等),或者对长度和风格的约束。
看看下面的对比,感受一下差别:
| 模糊指令 | 清晰指令 |
|---|---|
| “写点关于AI的东西” | “请用三个要点向初中生解释人工智能,每点不超过30字。” |
| “判断情感” | “判断下面评论的情感是正面还是负面,只输出一个词。” |
这里有几个实战技巧:
###、""" 或 --- 将指令和输入数据明确分开,帮助模型准确识别。“请以 JSON 格式输出,包含以下键:name, age, city”。“不要添加任何额外的解释,只输出数字答案。”对于数学、逻辑推理或多步骤任务,直接让模型给出最终答案,出错率往往很高。诀窍在于强制模型先展示它的推理过程,这能显著提升答案的准确性。
具体怎么做呢?有两种主流方法:
根据你提供的示例数量,提示词工程可以分为几种模式:
| 模式 | 示例数量 | 适用场景 |
|---|---|---|
| Zero-shot | 0 | 简单问答、分类 |
| One-shot | 1 | 格式单一的任务 |
| Few-shot | 2~5 | 格式化输出、专业领域 |
举个例子,对于情感分类任务:
“评论:床太硬了。情感:”,模型需要自己理解任务并输出“负面”。“外卖很快 → 正面;服务差 → 负面”,再让它判断新评论,模型就能更快地掌握规则。这是最直观的调用方式。程序发出请求后会一直等待,直到模型生成完整的回复后才继续执行。这种方式简单直接,适用于翻译、摘要、一次性内容生成等不需要实时交互的场景。
下面是一个使用智谱AI SDK进行同步调用的基础代码示例:
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key=API_KEY)
response = client.chat.completions.create(
model="glm-4-plus",
messages=[{"role": "user", "content": "你好"}],
stream=False
)
print(response.choices[0].message.content)
如果你用过ChatGPT的网页版,对那种逐字出现的“打字机效果”一定不陌生。这背后就是Server-Sent Events (SSE) 技术在支撑。开启流式输出后,模型不会等所有内容都生成完再一次性返回,而是边生成边推送,实现了极低的首字延迟和实时交互感。
实现流式调用的代码也很简单,关键在于将 stream 参数设为 True,然后遍历返回的数据块:
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key=API_KEY)stream = client.chat.completions.create(
model="glm-4-plus",
messages=[{"role": "user", "content": "讲个故事"}],
stream=True # 开启流式输出
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="",flush=True)
如果说Prompt是给模型下的“指令”,那么temperature(温度)参数就是控制模型“想象力”的旋钮。这个值通常在0到1之间,它直接影响输出内容的随机性和创造性。
| 温度值 | 行为 | 适用场景 |
|---|---|---|
| 0 ~ 0.2 | 确定性、保守 | 代码生成、数学计算 |
| 0.3 ~ 0.6 | 平衡 | 摘要、翻译 |
| 0.7 ~ 0.9 | 创意、多样 | 故事写作、头脑风暴 |
简单来说,温度越低,模型越保守、可预测;温度越高,模型越天马行空、富有创意。在API调用中,你可以这样设置它:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "写一首关于月亮的诗"}],
temperature=0.9 # 高温度增加新颖性
)
首先,我们创建一个独立的Python环境来管理依赖,避免版本冲突。使用Conda可以很方便地做到这一点:
conda create -n llm-universe python=3.10 -y
conda activate llm-universe
pip install zai-sdk
conda env config vars set ZAI_API_KEY="your-api-key"
conda activate llm-universe # 重新激活使变量生效
环境配置好后,一个基础的同步调用脚本如下。这里使用了python-dotenv来从.env文件安全地加载API密钥。
from zai import ZhipuAiClient
import os
from dotenv import load_dotenvload_dotenv()client = ZhipuAiClient(api_key=os.getenv("ZAI_API_KEY"))
resp = client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": "你好"}]
)
print(resp.choices[0].message.content)
流式调用的代码结构与同步调用类似,区别在于开启了stream=True,并且需要循环处理返回的数据流。
import os
from zai import ZhipuAiClient
from dotenv import load_dotenvload_dotenv() # 加载环境变量
client = ZhipuAiClient(api_key=os.getenv("ZHIPU_API_KEY")) # 从环境变量中获取 API Keystream = client.chat.completions.create(
model="glm-4-plus",
messages=[{"role": "user", "content": "讲个笑话"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
理论讲完了,是时候动手实践了。下面这个脚本将前面提到的知识点整合在一起,包含了同步和流式两种调用方式,并且展示了如何通过System Prompt和Temperature参数来精确指导模型的行为。你可以直接复制运行,作为你的开发起点。
import os
from zai import ZhipuAiClient
from dotenv import load_dotenvload_dotenv()# ==================== 配置区 ====================
# 建议使用环境变量设置 API_KEY
API_KEY = os.getenv("ZHIPU_API_KEY")
MODEL_NAME = "glm-4.5" # 可选:glm-5.1 等# ==================== 1. 同步调用 ====================
def sync_chat(prompt: str, system_prompt: str = None, temperature: float = 0.7):
"""
同步调用智谱大模型 API
:param prompt: 用户输入的提示词(必填)
:param system_prompt: 系统角色设定(可选,用于指导模型行为)
:param temperature: 温度参数,控制随机性(范围0-1,默认0.95,建议0.3-0.9)
:return: 模型返回的文本
"""
client = ZhipuAiClient(api_key=API_KEY)
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.append({"role": "user", "content": prompt})
response = client.chat.completions.create(
model=MODEL_NAME,
messages=messages,
temperature=temperature,
max_tokens=500, # 限制最大输出长度
stream=False, # 同步非流式
)
return response.choices[0].message.content# ==================== 2. 流式输出(SSE)====================
def stream_chat(prompt: str, system_prompt: str = None, temperature: float = 0.7):
"""
流式调用(SSE),逐字输出模型回复
"""
client = ZhipuAiClient(api_key=API_KEY)
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.append({"role": "user", "content": prompt})
response = client.chat.completions.create(
model=MODEL_NAME,
messages=messages,
temperature=temperature,
max_tokens=500,
stream=True, # 开启流式输出
)
print("模型回复:", end="", flush=True)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print() # 换行
# ==================== 使用示例 ====================
# __name__ == "__main__" 这一行的意思是:当这个 Python 文件被直接运行时,下面的代码块会被执行;如果这个文件被作为模块导入到其他文件中,下面的代码块则不会被执行。这是一种常见的 Python 编程习惯,用于区分直接运行和导入两种情况。
if __name__ == "__main__":
# ----- 1. 同步调用示例 -----
print("=== 同步调用示例 ===")
result1 = sync_chat(
prompt="请介绍一下人工智能",
system_prompt="你是一位严谨的计算机科学教授,回答必须准确、简洁。",
temperature=0.3
)
print(result1)
print()
# ----- 2. 流式输出示例(SSE)-----
print("=== 流式输出示例(SSE)===")
stream_chat(
prompt="讲一个关于月亮的简短童话故事",
system_prompt="你是一个富有想象力的童话故事作家",
temperature=0.8
)
看到这里,核心知识已经过了一遍。不妨对照下面这个清单,看看自己掌握了多少:
如果以上大部分你都能自信回答,那么恭喜,你已经掌握了与大语言模型高效协作的基础法门。剩下的,就是在实际项目中不断练习和优化了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8