跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI

深入理解 LLM 调用与 Prompt 编写:构建基础智能体

大语言模型(LLM)的基本概念及其分类,详细讲解了如何通过 API-Key 调用 LLM 服务,包括环境变量配置、角色设定及流式输出选项。重点阐述了 Prompt 工程的基础逻辑,涵盖身份设定、任务描述、输出限制以及 Zero/Few-shot 和 Chain-of-thought 等关键技术概念。最后通过 Python 代码示例,演示了如何利用消息列表实现多轮对话记忆,构建一个具备短期记忆的基础智能体,并指出了当前方案的局限性及后续优化方向。

监控大屏发布于 2026/4/5更新于 2026/7/2061 浏览
深入理解 LLM 调用与 Prompt 编写:构建基础智能体

前言

在上篇文章,我们已对 Agent 有了最初步的了解。接下来我们深入了解下什么是 LLM,Prompt,并开始独立完成我们自己搭建的第一个 Agent。

一、了解 LLM

LLM:Large Language Model,即我们常说的大语言模型。市面上琳琅满目的如 deepseek,kimi,豆包,chatgpt,gemini 等都属于 LLM。 LLM 可以说是 Agent 最核心的那个大脑,没有大脑自然无法组织起一个 Agent 任何的行为。而如果想使用这些大语言模型,一般我们会选择到它们的官网上去获取 api-key。有了它作为 api 接口,我们就能自由的本地调用 ai。 同时 LLM 模型分为非常多类,有视觉模型的,有深度思考的(能看到 ai 思考链但返回数据比较慢),有蒸馏模型的,有闭源/开源的。我们日常使用 Agent,就得按需选择。 当然,可能有小伙伴会想本地部署 LLM。我们后面文章会教这点,但还是不太做推荐。很简单的道理,本地部署的 LLM 对个人而言只能是蒸馏版,自己玩用用可以,但没法在绝大多数生产项目级场景下使用。如果真需要本地部署或者数据敏感场景,一般也是公司花大价钱买一堆算力卡来做这个事。少数能预见的使用场景,也就是学习微调了(同样也需要非常高的显卡存储)。

二、LLM 怎么调用

我们这里以 deepseek 的 api-key 调用为例。 打开官方文档,用官方给我们的文档来完成调用: 文章配图 其中略微讲解下: api_key=os.environ.get('DEEPSEEK_API_KEY') 这里,就是让我们在环境变量中写入这个东西,这样的话,你就无需显式应用 api-key,能更好的保护隐私安全。当然如果你嫌麻烦,目前直接改成 api_key="xx" 也是可以的。 "role":"system": 角色是系统:系统提示词,即你要在这里给 ai 设定一个什么角色,比如你是一个猫娘。 "role":"user": 角色是用户:你对 ai 说的话。 stream=False 即是否允许流式输出,如果为 True,就是允许,你就能在控制台上看到输出结果像流水一样慢慢流出。反之则是得等生成完全才会返回。 如上,完成调用后,就能看到返回的信息了: 文章配图

三、Prompt 基础逻辑

回忆下官方文档的这里: 文章配图 {"role":"system","content":"You are a helpful assistant..."}这是什么?这就是Prompt(提示词)。 提示词是 Agent 构建中极其重要的一环。提示词即提示 ai 你是一个什么身份,在这个身份下你要干什么事情。比如你是一个智能客服/你是一个 NBA 智能预测比赛专家/你是一个猫娘,你负责帮助用户理解产品/帮助用户预测比赛/帮助用户...

你是一个 AI 助手,擅长解释技术概念。任务:用小学生能听懂的话,解释什么是大模型。要求:不超过 100 字,用中文回答。 如上:确定身份 + 给出任务 + 限定输出。 一个 Agent 好不好,一定程度上取决于这个提示词写的好不好,甚至市面上有专门的岗位就是提示词工程师。 同时,你肯定也能感觉出来,这个提示词明显写的非常的简单。实际上如果真要写项目的提示词,我们会采取更加复杂的写法来适应实际业务,举个例子:

你是一个智能生活助手,具备以下能力:
1. 调用 weather_api(location) 获取指定城市的天气数据
2. 根据温度、降水概率给出穿衣建议
请按以下步骤执行:
1. 理解用户需求,确定城市
2. 调用 weather_api 获取天气
3. 分析数据,生成建议
4. 用友好语气回复用户
输出规则:
- 如果需要调用工具,只输出 JSON 格式的工具调用指令
- 否则,正常回复用户
示例:
用户:北京今天穿什么?
AI:{"tool": "weather_api", "args": {"location": "北京"}}

如上,有角色、有流程、有能力(调用工具)、可以自动化。这才是 Prompt 的正确用法。 能调用工具这点我们下一节立马就会学到。其他的提示词写法其实你看类似的提示词多分析分析,或者多让 ai 帮你写写提示词,你跟着依葫芦画瓢对着多写,也能掌握个七七八八了。 Prompt 的几个关键概念这里一并提及: Zero/Few-shot:(控制模型生成方式)不给/给几个实例,让模型回答/模仿回答。实操:在提示词内直接加几行实例即可(请仿照下列文本格式输出...)。 Cot(Chain-of-thought):让模型思考步骤,提高复杂推理准确性。实操:在提示词内强调 - 请逐步思考/思考步骤如下...。 显而易见,理解与实操都很简单,这俩概念了解即可,在真正提示词编写过程中不必钻研太深。

四、简单交互实例(多轮问答 Agent)

了解完 LLM 与 Prompt,我们可以尝试搭建我们的第一个 Agent 了。 先确定好思路:我们打算让 ai 当一个老师,教我们历史知识,同时我们肯定希望它能保持记忆,记住上下文对话。而大模型在原始状态下是不会保存与用户的对话记忆的。所以我们需要为其加入点新功能: 再回到下面这个地方:

messages=[
    {"role": "system", "content": "You are a helpful assistant"},
    {"role": "user", "content": "Hello"}
]

除了提供各种角色身份外,它同样有个非常重要的特点:消息列表。 这意味着,如果我们想要多轮对话,让 ai 能记住我们的上下文,就可以通过不断往里面追加代码,让 messages 变得越来越多。 所以,我们可以通过 while True: 无限循环的方式不断往里追加 messages来实现我们的目的:

# ...
while True:
    response = agent_client.chat.completions.create(
        model="deepseek-chat",
        messages=messages
    )
    answer = response.choices[0].message.content
    print(f'回答:{answer}')
    # 询问是否还有其他问题
    user_input = input('您还有其他想继续问的吗 | (exit 退出)\n')
    if user_input == "exit":
        break
    # 继续记录对话 (涵盖用户追问 + ai 上句回答)
    messages.append({"role":"user","content":user_input})
    messages.append({"role":"assistant","content":answer})

细心的同学已经发现了:这里加了个一个新 role:assistant,即助手。 它表示的身份是助手,即 ai 自己。所以我们这里为其添加的 content 是 answer。 文章配图 如图,测试完成,符合我们预期,此时的它明显可以记忆上下文对话。 但同时仍要提醒一下:我们目前完成的很明显只是个 demo,它只能拥有短期记忆,在正规开发中记忆的写法肯定不会这么简单。后面随着学习的深入时,我们会构思应该用怎样的方式,让它拥有一个不错的可以长期存储,性能更优的解法。

五、总结

知识点概括:LLM 了解与调用、Prompt 编写与逻辑构思、多轮对话记忆、独立搭建一个智能体。 这里我们已初步掌握了如何做一个能用能玩的智能体,效果基本等同于市面上的大部分 ai 模型直接对话。但明显它的功能水平还差点意思,没有 agent 的'味儿'。 下篇内容我们会开始深入研究Function calling & 工具调用,让 ai 能利用外部的工具来干活。

目录

  1. 前言
  2. 一、了解 LLM
  3. 二、LLM 怎么调用
  4. 三、Prompt 基础逻辑
  5. 四、简单交互实例(多轮问答 Agent)
  6. ...
  7. 五、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 8 篇必读的大模型论文精选
  • Stable Diffusion 底模 VAE 推荐及配置优化解析
  • 递归算法:二叉树遍历的核心实现
  • 本地 AI 小说生成器部署指南:从零搭建与配置
  • Java 并发核心:AQS 是什么及其工作原理
  • 基于 Coze 构建专属 AI 应用:从智能体到 Web 部署
  • 理解 IDE 调用大模型的 Session 机制与管理
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • 【前端实战】多进制奇偶校验检查器(HTML+CSS+JS)完整实现,附源码
  • 大模型提示词工程(Prompt Engineering)核心技巧与实践
  • ThinkPHP 与 Laravel 实现游戏玩家视频交流平台的人脸识别功能
  • Whisper-large-v3 语音识别效果实测与工程落地
  • WooNuxt 电商前端架构深度解析
  • Python 在 CentOS 系统上的安装与配置深度指南
  • Spring Boot + jQuery 前后端分离图书管理系统:接口设计与调试
  • C++ STL string 类从零实现详解
  • SRC 漏洞挖掘思路与手法详解:从信息搜集到批量测试
  • Unity WebGL 构建后本地运行测试指南
  • Spring Boot 稳定版本与 JDK 配套策略深度解析
  • VSCode Copilot 配置文件提示未知工具警告

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online