二、填空题(10 题)
大模型 API 调用的四个基本步骤是:导包、、发送消息、。
✓ 正确
解析:标准流程:导入库 → 创建客户端(配置 base_url 等)→ 发送 messages → 解析返回结果。
messages 是大模型接口中的列表。
✓ 正确
解析:messages 是一个列表,包含 system/user/assistant 等角色的消息字典。
OpenAI 兼容接口的好处是可以用类似写法调用不同平台的。
✓ 正确
解析:OpenAI 兼容接口统一了调用方式,只需更换 base_url 和 api_key 就能切换不同平台。
流式输出通常需要使用循环逐段读取模型返回内容。
✓ 正确
解析:for chunk in stream 循环遍历流式对象,逐段读取并打印内容。
end="" 的作用是让 print() 打印后不自动。
✓ 正确
解析:默认 print() 末尾会加换行符,end="" 让内容连续显示,模拟打字效果。
zero-shot 表示不给模型,直接让模型完成任务。
✓ 正确
解析:zero-shot 零样本学习,不提供任何示例,完全依赖模型自身的理解能力。
few-shot 表示给模型少量,让模型模仿格式或判断标准。
✓ 正确
解析:few-shot 少样本学习,通过 1-3 个示例引导模型理解任务格式和要求。
CoT 的中文名称是。
✓ 正确
解析:CoT(Chain of Thought)思维链,通过要求模型逐步推理来提高复杂任务的准确率。
Self-Consistency 可以理解为多条思路生成答案后进行或比较。
✓ 正确
解析:Self-Consistency 通过多条推理路径生成答案,再投票选出最常见的结果。
ReAct 的核心循环可以概括为:思考、行动、、再思考。
✓ 正确
解析:ReAct 循环:Thought(思考)→ Action(行动)→ Observation(观察)→ 再思考。
三、简答题(10 题)
为什么真实项目中不能只依赖网页端和大模型聊天?
查看参考答案 ▼
因为真实项目需要程序自动调用模型、自动处理用户输入、自动解析模型结果,并把结果展示、保存或交给后续流程处理。网页聊天适合体验模型能力,但不适合做自动化业务系统。
✓ 正确
参考答案:因为真实项目需要程序自动调用模型、自动处理用户输入、自动解析模型结果,并把结果展示、保存或交给后续流程处理。网页聊天适合体验模型能力,但不适合做自动化业务系统。
批处理和流式输出有什么区别?
查看参考答案 ▼
批处理是模型生成完整答案后一次性返回,适合短回答和后台任务;流式输出是一段一段返回内容,适合聊天、长文本生成和需要改善用户等待体验的场景。
✓ 正确
参考答案:批处理是模型生成完整答案后一次性返回,适合短回答和后台任务;流式输出是一段一段返回内容,适合聊天、长文本生成和需要改善用户等待体验的场景。
如果模型返回结果取不到,应该如何排查?
查看参考答案 ▼
应先打印完整响应对象,查看真实返回结构,再根据字段层级取值。不要直接猜字段,也不要在换模型后继续照搬旧的解析路径。
✓ 正确
参考答案:应先打印完整响应对象,查看真实返回结构,再根据字段层级取值。不要直接猜字段,也不要在换模型后继续照搬旧的解析路径。
zero-shot 和 few-shot 的区别是什么?
查看参考答案 ▼
zero-shot 是不给示例,直接让模型完成任务;few-shot 是给模型少量示例,让模型模仿示例的格式、风格或判断标准。
✓ 正确
参考答案:zero-shot 是不给示例,直接让模型完成任务;few-shot 是给模型少量示例,让模型模仿示例的格式、风格或判断标准。
few-shot 为什么不是训练模型?
查看参考答案 ▼
few-shot 只是把示例放进提示词上下文中,让模型临时参考,不会修改模型参数,也不会让模型永久学会这些示例。
✓ 正确
参考答案:few-shot 只是把示例放进提示词上下文中,让模型临时参考,不会修改模型参数,也不会让模型永久学会这些示例。
CoT 适合什么任务?为什么简单任务不一定适合 CoT?
查看参考答案 ▼
CoT 适合数学题、逻辑题、多步骤任务、代码分析等复杂推理任务。简单任务不一定适合 CoT,因为它会增加 token 消耗和响应时间。
✓ 正确
参考答案:CoT 适合数学题、逻辑题、多步骤任务、代码分析等复杂推理任务。简单任务不一定适合 CoT,因为它会增加 token 消耗和响应时间。
链式提示和 CoT 有什么区别?
查看参考答案 ▼
CoT 多数是在一个提示词中要求模型分步推理;链式提示更偏工程实现,是把一个大任务拆成多个子任务,让前一步结果作为下一步输入。
✓ 正确
参考答案:CoT 多数是在一个提示词中要求模型分步推理;链式提示更偏工程实现,是把一个大任务拆成多个子任务,让前一步结果作为下一步输入。
Self-Consistency 的优点和代价分别是什么?
查看参考答案 ▼
Self-Consistency 的优点是提高复杂推理任务的稳定性;代价是需要多次调用模型,会增加 token 成本、运行时间和代码复杂度。
✓ 正确
参考答案:Self-Consistency 的优点是提高复杂推理任务的稳定性;代价是需要多次调用模型,会增加 token 成本、运行时间和代码复杂度。
ReAct 中模型和程序分别负责什么?
查看参考答案 ▼
模型负责思考下一步、选择工具、总结工具结果;程序负责提供工具、执行工具、校验工具调用和返回结果。
✓ 正确
参考答案:模型负责思考下一步、选择工具、总结工具结果;程序负责提供工具、执行工具、校验工具调用和返回结果。
提示词注入攻击应该如何防御?
查看参考答案 ▼
可以通过分隔符隔离用户输入、明确任务边界、不把敏感信息放入提示词、限制工具调用权限、对输出进行安全检查等方式防御。
✓ 正确
参考答案:可以通过分隔符隔离用户输入、明确任务边界、不把敏感信息放入提示词、限制工具调用权限、对输出进行安全检查等方式防御。
四、代码实战(7 题)
基础练习:大模型基础调用
使用 OpenAI 兼容接口调用云端模型,让模型回答"请用三句话说明 Python 程序员为什么要学习大模型 API 调用"。
查看参考答案 ▼
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{
"role": "user",
"content": "请用三句话说明 Python 程序员为什么要学习大模型 API 调用。"
}
]
)
answer = response.choices[0].message.content
print(answer)
✓ 正确
参考答案:from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{
"role": "user",
"content": "请用三句话说明 Python 程序员为什么要学习大模型 API 调用。"
}
]
)
answer = response.choices[0].message.content
print(answer)
基础练习:流式输出
在上一题基础上开启流式输出(stream=True),使用 for 循环逐段读取,用 end="" 和 flush=True 实现实时输出效果。
查看参考答案 ▼
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
stream = client.chat.completions.create(
model="qwen-plus",
messages=[
{
"role": "user",
"content": "请用通俗语言解释什么是大模型流式输出。"
}
],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
✓ 正确
参考答案:from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
stream = client.chat.completions.create(
model="qwen-plus",
messages=[
{
"role": "user",
"content": "请用通俗语言解释什么是大模型流式输出。"
}
],
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="", flush=True)
Few-shot 翻译
使用 few-shot 提示词,system 中提供一个英文到中文的翻译示例,user 中提供新的英文句子,让模型参考示例格式翻译。
查看参考答案 ▼
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
system_prompt = """
你是一个英文到中文的翻译助手。
请参考下面的示例进行翻译,只输出中文结果,不要输出多余解释。
示例:
英文:I love Python.
中文:我喜欢 Python。
"""
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "Large models can call external tools."}
]
)
print(response.choices[0].message.content)
✓ 正确
参考答案:from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
system_prompt = """
你是一个英文到中文的翻译助手。
请参考下面的示例进行翻译,只输出中文结果,不要输出多余解释。
示例:
英文:I love Python.
中文:我喜欢 Python。
"""
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "Large models can call external tools."}
]
)
print(response.choices[0].message.content)
Zero-shot CoT
让模型回答年龄题(小明6岁妹妹一半,哥哥大4岁,现在70岁),要求"请一步一步思考",打印推理过程和最终答案。
查看参考答案 ▼
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
question = """
当小明 6 岁时,他的妹妹年龄是他的一半。他的哥哥比小明大 4 岁。
现在小明 70 岁了,请问他的妹妹和哥哥年龄加起来是多少?
"""
prompt = f"""
请解决下面的问题。
题目:
{question}
要求:
1. 请一步一步思考。
2. 先写出推理过程。
3. 最后单独给出最终答案。
"""
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "user", "content": prompt}
]
)
print(response.choices[0].message.content)
✓ 正确
参考答案:from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
question = """
当小明 6 岁时,他的妹妹年龄是他的一半。他的哥哥比小明大 4 岁。
现在小明 70 岁了,请问他的妹妹和哥哥年龄加起来是多少?
"""
prompt = f"""
请解决下面的问题。
题目:
{question}
要求:
1. 请一步一步思考。
2. 先写出推理过程。
3. 最后单独给出最终答案。
"""
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "user", "content": prompt}
]
)
print(response.choices[0].message.content)
链式提示
完成三步链式任务:从文本中抽取要点 → 根据要点写摘要 → 优化摘要语言。前一步结果作为下一步输入,每步都打印。
查看参考答案 ▼
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def ask_model(prompt):
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
article = """
近年来,大模型在客服、教育、办公和数据分析等场景中应用越来越广。
企业在使用大模型时,通常需要通过 Prompt 工程约束模型输出格式,
并结合知识库、外部工具和安全审核来提高回答可靠性。
"""
# 第一步:抽取要点
points = ask_model(f'请从下面文本中抽取 3 个关键要点。
文本:
"""{article}"""')
print("第一步:抽取要点")
print(points)
# 第二步:生成摘要
summary = ask_model(f'请根据下面的要点,生成一段 100 字以内的摘要。
要点:
"""{points}"""')
print("第二步:生成摘要")
print(summary)
# 第三步:优化摘要
final = ask_model(f'请优化下面这段摘要,使语言更简洁、正式。
摘要:
"""{summary}"""')
print("第三步:优化摘要")
print(final)
✓ 正确
参考答案:from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def ask_model(prompt):
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
article = """
近年来,大模型在客服、教育、办公和数据分析等场景中应用越来越广。
企业在使用大模型时,通常需要通过 Prompt 工程约束模型输出格式,
并结合知识库、外部工具和安全审核来提高回答可靠性。
"""
# 第一步:抽取要点
points = ask_model(f'请从下面文本中抽取 3 个关键要点。
文本:
"""{article}"""')
print("第一步:抽取要点")
print(points)
# 第二步:生成摘要
summary = ask_model(f'请根据下面的要点,生成一段 100 字以内的摘要。
要点:
"""{points}"""')
print("第二步:生成摘要")
print(summary)
# 第三步:优化摘要
final = ask_model(f'请优化下面这段摘要,使语言更简洁、正式。
摘要:
"""{summary}"""')
print("第三步:优化摘要")
print(final)
Self-Consistency 简化实现
让模型针对同一个问题生成 3 个不同思路(输出 JSON 数组),再让模型从多个答案中选出最合理的结果。不使用 eval()。
查看参考答案 ▼
import json
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def ask_model(prompt):
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
question = "当小明 6 岁时,妹妹 3 岁。现在小明 70 岁,妹妹多少岁?"
# 第一步:生成 3 个思路
ideas_text = ask_model(f'"""
请针对下面问题,给出 3 个不同的解题思路。
问题:{question}
输出要求:只输出 JSON 数组,格式:["思路1", "思路2", "思路3"]
"""')
ideas = json.loads(ideas_text)
# 第二步:按每个思路回答
answers = []
for idea in ideas:
answer = ask_model(f'请按照思路"{idea}"解决问题。问题:{question}')
answers.append(answer)
# 第三步:评审选出最终答案
final = ask_model(f'请从下面多个答案中选出最合理的答案。
问题:{question}
候选答案:{answers}')
print("最终结果:", final)
✓ 正确
参考答案:import json
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def ask_model(prompt):
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
question = "当小明 6 岁时,妹妹 3 岁。现在小明 70 岁,妹妹多少岁?"
# 第一步:生成 3 个思路
ideas_text = ask_model(f'"""
请针对下面问题,给出 3 个不同的解题思路。
问题:{question}
输出要求:只输出 JSON 数组,格式:["思路1", "思路2", "思路3"]
"""')
ideas = json.loads(ideas_text)
# 第二步:按每个思路回答
answers = []
for idea in ideas:
answer = ask_model(f'请按照思路"{idea}"解决问题。问题:{question}')
answers.append(answer)
# 第三步:评审选出最终答案
final = ask_model(f'请从下面多个答案中选出最合理的答案。
问题:{question}
候选答案:{answers}')
print("最终结果:", final)
ReAct 简化工具调用
实现简化版 ReAct 天气查询:定义 get_weather(city) 模拟工具,让模型判断需要查询哪个城市,程序调用工具,再把结果交给模型生成自然语言回答。
查看参考答案 ▼
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def get_weather(city):
weather_data = {
"深圳": "小雨,25-29℃,湿度较高,建议带伞。",
"北京": "晴,18-27℃,空气较干燥,适合出行。",
"上海": "多云,22-28℃,体感舒适。"
}
return weather_data.get(city, "暂时没有查询到该城市的天气。")
def ask_model(prompt):
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
user_question = "我明天去深圳上课,需要带伞吗?"
# 第一步:让模型提取城市
city = ask_model(f'从问题中提取城市名,只输出城市名。
问题:{user_question}').strip()
print("城市:", city)
# 第二步:调用工具
weather = get_weather(city)
print("天气:", weather)
# 第三步:生成最终回答
answer = ask_model(f'用户问题:{user_question}
天气结果:{weather}
请用自然语言回答。')
print("回答:", answer)
✓ 正确
参考答案:from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def get_weather(city):
weather_data = {
"深圳": "小雨,25-29℃,湿度较高,建议带伞。",
"北京": "晴,18-27℃,空气较干燥,适合出行。",
"上海": "多云,22-28℃,体感舒适。"
}
return weather_data.get(city, "暂时没有查询到该城市的天气。")
def ask_model(prompt):
response = client.chat.completions.create(
model="qwen-plus",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
user_question = "我明天去深圳上课,需要带伞吗?"
# 第一步:让模型提取城市
city = ask_model(f'从问题中提取城市名,只输出城市名。
问题:{user_question}').strip()
print("城市:", city)
# 第二步:调用工具
weather = get_weather(city)
print("天气:", weather)
# 第三步:生成最终回答
answer = ask_model(f'用户问题:{user_question}
天气结果:{weather}
请用自然语言回答。')
print("回答:", answer)