01-LLM 基础与提示词工程:从 API 调用到 Prompt 优化技巧

LLM 基础与提示词工程:从 API 调用到 Prompt 优化技巧

系列文章 :RAG 与 LangChain 开发实战(1/7)
阅读时间 :约 15 分钟
前置知识:Python 基础


一、为什么需要学习 LLM 开发?

大语言模型(LLM)正在改变我们构建应用的方式。但直接使用原始 API 存在诸多挑战:

  • 知识时效性:模型训练数据有截止时间,无法获取最新信息
  • 领域知识缺乏:无法覆盖特定行业或企业内部知识
  • 幻觉问题:模型可能"一本正经地胡说八道"
  • 数据安全:敏感数据不能随意发送给公共模型

RAG(检索增强生成) 技术正是为解决这些问题而生。而 LangChain 框架则让 RAG 开发变得简单高效。

本系列将从 LLM 基础开始,带你完整掌握 RAG 开发的全流程,最终实现一个可落地的智能客服系统。


二、环境准备与 API 调用

2.1 环境变量配置

最佳实践:永远不要将 API Key 硬编码在代码中!

将API Key配置进环境变量中

需要配置两个:

变量名:OPENAI_API_KEY

变量值:你的API Key

变量名:DASHSCOPE_API_KEY

变量值:你的API Key

bash 复制代码
client = OpenAI(
    #配置了环境变量可以不写api_key,自动读取
    #api_key=os.getenv("OPENAI_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

配置了环境变量可以不写api_key,自动读取

2.2 使用 OpenAI 兼容接口调用模型

python 复制代码
from openai import OpenAI
import os

client = OpenAI(
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

messages = [
    {"role": "user", "content": "你是谁"},
    {"role": "user", "content": "输出 1-10 数字"},
]

completion = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=messages,
    extra_body={"enable_thinking": True},
    stream=True
)

is_answering = False
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "完整回复" + "=" * 20)
            is_answering = True
        print(delta.content, end="", flush=True)

关键点

  • stream=True 启用流式输出,提升用户体验
  • enable_thinking=True 开启深度思考模式(部分模型支持)
  • messages 列表可携带历史对话,实现上下文理解

三、提示词工程(Prompt Engineering)

3.1 什么是提示词工程?

Prompt Engineering (提示工程)也称为 In-Context Prompting,指在不更新模型权重的情况下,通过设计输入提示来引导模型行为,获得所需结果的方法。

最简单的例子:

复制代码
讲个笑话

3.2 核心优化技巧

技巧 1:Few-Shot 少样本学习

当模型学习过大量数据后,只需少量示例就能快速理解新任务。

示例:抽取产品信息

复制代码
请抽取产品名称和核心卖点 2 个字段,格式为 Json,我提供 2 个示例。

示例 1:
输入:MacBookPro 高效节能,性能强大,适合牛马工作使用
输出:{"产品名称":"MacBookPro","产品卖点":"高效节能,性能强大"}

示例 2:
输入:联想笔记本拥有 RTX4060 独立显卡,畅玩游戏,丝滑流畅
输出:{"产品名称":"联想笔记本","产品卖点":"畅玩游戏,丝滑流畅"}

请处理:华为 MatepadPro,高清大屏,长效续航,你的好帮手。
技巧 2:Zero-Shot 零样本学习

模型能用已有知识推理新类别。

示例:情感分析

复制代码
请判断"''包围的用户评论中的情感倾向,输出 正面或负面。"

"这款代餐鸡胸肉饱腹感很强,吃起来也不柴,很推荐!"

模型知道"饱腹感强"、"不柴"、"很推荐"都是正面词汇,从而判断为正面情感。

技巧 3:清晰表达需求

任何 Prompt 技巧都不如清晰表达需求重要。

实用技巧清单

  1. 角色设定:让模型充当某个角色(如面试官),它会自主扮演

  2. 使用分隔符 :用 '''[]、XML 标签标明输入的不同部分

    复制代码
    '''在此插入文本'''
  3. 拆分任务:对复杂任务指定执行步骤

  4. 提供示例:本质是 Few-Shot 学习

3.3 幻觉问题与解决方案

幻觉:模型一本正经地胡说八道。

经典解决方案:使用参考文本回答

python 复制代码
prompt = """
根据下文中三重引号引起来的文章来回答问题。
如果在文章中找不到答案,请写"我找不到答案",不要自己造答案。

'''
<在此插入文档>
'''

问题:<在此插入问题>
"""

这正是 RAG 技术的核心思想!


四、核心概念总结

4.1 关键知识点

概念 说明
API 调用 使用 OpenAI 兼容接口调用大模型
流式输出 stream=True 实现打字机效果
上下文历史 messages 列表携带对话历史
Few-Shot 提供示例让模型快速理解任务
Zero-Shot 无需示例,直接用已有知识推理
幻觉 模型编造信息,需用参考文本约束

4.2 本质理解

不管是 RAG 还是 Agent 智能体,亦或是其它围绕模型的各类复杂开发工作,本质上都可以简单总结为:在提示词上下功夫。


五、下一步

本文介绍了 LLM 基础调用和提示词工程技巧。但直接操作原始 API 存在以下问题:

  • 不同模型的接口不统一
  • 提示词模板管理混乱
  • 无法方便地串联多个步骤
  • 缺少文档处理、向量存储等高级功能

下一篇 我们将介绍 LangChain 框架,它通过统一的接口和组件化的设计,让 LLM 应用开发变得简单高效。


系列文章导航

  1. LLM 基础与提示词工程:从 API 调用到 Prompt 优化技巧(本文)
  2. LangChain 框架入门:模型抽象与 Prompt 模板
  3. LangChain 进阶:Chain 链与输出解析器
  4. LangChain 记忆与文档处理:让 AI 拥有长期记忆
  5. RAG 核心概念与向量存储
  6. RAG 实战 (上):知识库构建
  7. RAG 实战 (下):智能客服系统

版权声明:本文基于学习笔记整理,转载请注明出处。

相关推荐
愚公搬代码1 小时前
【粉丝福利社】AI时代硬核竞争力:这个数学书单传疯了
人工智能
超级学长1 小时前
光学神经网络:进展与挑战(Optical Neural Networks: Progress and Challenges)
人工智能·深度学习·光学神经网络
咚咚王者1 小时前
人工智能之语言领域 自然语言处理 第九章 文本相似度计算
人工智能·自然语言处理
研究点啥好呢1 小时前
每日GitHub热门项目推荐 | 2026年3月9日
人工智能·ai·自动化·github·openclaw
python猿1 小时前
打卡Python王者归来--第28天
python
itwangyang5201 小时前
GitHub Push Protection 报错解决指南(检测到 Token / Secret)
人工智能·python·github
喵手2 小时前
Python爬虫实战:环境监测实战 - 天气与空气质量的联合分析!
爬虫·python·爬虫实战·环境监测·天气预测·零基础python爬虫教学·天气质量
喵手2 小时前
Python爬虫实战:鸣枪起跑!深度抓取全国马拉松赛事报名情报!
爬虫·python·爬虫实战·马拉松·零基础python爬虫教学·采集马拉松赛事报名数据·马拉松数据采集
小钻风33662 小时前
Java函数式编程-lambda表达式
java·开发语言·python