当前位置: 首页 > news >正文

【AI】Agent 全栈进阶|大模型基础与对话调用

◆ 博主名称: QuZhengRong
AI俘虏,样式苦手

⭐️ Agent专栏: Agent
⭐️ LuckReport专栏: LuckReport
⭐️ SpringBoot专栏: SpringBoot

目录

  • 一、什么是大模型
  • 二、调用大模型接口
    • 1、准备工作
    • 2、简单的对话
    • 3、让大模型扮演角色
    • 4、让大模型识别图片
    • 5、让大模型记住上文
  • 三、总结
  • 四、LuckReport 项目推荐
    • 1、项目简介
    • 2、在线体验

上一篇博客我梳理了 Agent 的学习路线,这一章开始动手写代码,先从最基础的环节——调用大模型对话开始。

搞 Agent 绕不开跟大模型打交道,学会用代码跟它对话是第一步

一、什么是大模型

大语言模型(LLM):基于 Transformer 架构的超大规模神经网络,经海量文本训练,核心能力是预测下一个词。

简单说,你问它“1+1=”,它能根据学到的知识,猜出下一个词是“2”。它并不理解数学运算,只是基于统计概率做出预测。

Transformer 架构:大模型的核心技术,其优势在于:

  1. 理解上下文:擅长捕捉句子中的逻辑关系和指代(如“苹果很好吃,它很甜”中的“它”指代苹果)。
  2. 并行处理:能同时处理整句话,而非逐词顺序处理,大幅提升了训练和推理速度。


二、调用大模型接口

先从零搭一个 Python 项目,演示从最基础的对话到进阶的多模态交互。

1、准备工作

  • Python 环境:建议 3.8 以上版本。
  • API Key:调用大模型需要 Key

我用阿里百炼来演示,它是阿里云的大模型服务平台,内置通义千问全系列模型,新用户有免费额度。

  1. 去 阿里百炼官网 注册登录。
  2. 开通服务后进入 API-KEY 管理页面。
  3. 点击创建新的 API-KEY,把生成的 Key 复制下来。
  • 安装依赖库:我们用 LangChain 这个框架来调用模型。

LangChain 框架:一个用于开发大模型应用的开源框架,把大模型、提示词、工具、记忆等组件封装成统一接口,可以像搭积木一样组合出 AI 应用,它的优势如下

  1. 屏蔽底层差异:各模型厂商的 API 各不相同,LangChain 提供统一封装,换模型只需改个配置,不用重写业务代码。
  2. 生态完整:工具调用、RAG、Agent、记忆等组件开箱即用,后续进阶不用重复造轮子。
  3. 社区主流:目前最主流的 LLM 应用框架之一,遇到问题容易找到解决方案。
pipinstalllangchain langchain-openai python-dotenv

2、简单的对话

先来个最简单的:问大模型“毛利率怎么算”。

  • Step 1:创建一个.env文件,存放我们的 API Key。这样代码里就不用直接写密钥了,比较安全。
# 阿里百炼 API 配置 API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 阿里百炼 API 地址(OpenAI 兼容接口) BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
  • Step 2:编写basic_chat.py脚本。
fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI# 加载环境变量,从 .env 文件读取配置load_dotenv()# 1. 初始化大模型# 指定模型名称和 API 信息,这里用 qwen3.7-max 模型llm=ChatOpenAI(model="qwen3.7-max",api_key=os.getenv("API_KEY"),base_url=os.getenv("BASE_URL"))# 2. 准备要问的问题# messages 是一个列表,里面放对话历史。这里只有一轮对话,角色是 usermessages=[{"role":"user","content":"毛利率怎么算?"}]# 3. 发送请求,获取回答# invoke 方法会等待模型生成完整的回答response=llm.invoke(messages)# 4. 打印结果# response.content 就是大模型返回的文本print("大模型回答:",response.content)
  • 运行一下:执行python basic_chat.py,你就能看到大模型的回答了。

3、让大模型扮演角色

刚才的对话里,大模型是个百科全书,但很多时候,我们希望它能扮演特定角色,比如客服、作家,工程师。这就需要用到系统提示词(System Prompt)。

让我们来让大模型扮演一下“勇哥”,360度转一圈

  • 编写role_play_chat.py
fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI load_dotenv()# 初始化大模型llm=ChatOpenAI(model="qwen3.7-max",api_key=os.getenv("API_KEY"),base_url=os.getenv("BASE_URL"))# 1. 定义系统提示词# 这是角色扮演的关键,用一段话告诉模型它应该是谁、怎么说话system_prompt=""" 你现在扮演抖音"勇哥餐饮创业说"的勇哥。 【说话风格】 - 直接、不留情面,说话干脆犀利、一针见血 - 口头禅:"我滴妈"、"别干了"、"穷人的钱好骗,但不好赚" - 结论斩钉截铁,不模棱两可 【核心价值观】 - 90%的餐饮项目注定失败,止损比盈利更重要 - 永远先算账,用数据说话 """# 2. 构造对话# 注意:messages 列表的第一条通常是 system,用来设定全局规则messages=[{"role":"system","content":system_prompt},{"role":"user","content":"勇哥,我想加盟哪吒仙饮奶茶店,靠谱不?"}]# 3. 流式调用,一边生成一边打印print("勇哥附体:")forchunkinllm.stream(messages):print(chunk.content,end="",flush=True)
  • 运行一下:你会发现大模型的回答风格瞬间变了,可能会蹦出一句:“我滴妈!你加盟奶茶店?之前看过我视频吗?”

4、让大模型识别图片

现在的大模型已经能处理图片了,这叫多模态(Multimodal)能力。我们可以让它看一张图,然后描述内容。

  • 编写multimodal_chat.py
fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessage load_dotenv()# 初始化支持视觉的模型,qwen3.7-max 不支持图片输入,这里用 qwen3.7-plusllm=ChatOpenAI(model="qwen3.7-plus",api_key=os.getenv("API_KEY"),base_url=os.getenv("BASE_URL"))# 1. 构造包含图片的消息# HumanMessage 可以包含多种内容:文本、图片等message=HumanMessage([{"type":"text","text":"描述一下这张图片"},{"type":"image_url","image_url":{"url":"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}}])# 2. 流式调用,一边生成一边打印,体验更好# stream 方法返回一个迭代器forchunkinllm.stream([message]):# flush=True 让内容立即显示,不要等缓冲print(chunk.content,end="",flush=True)
  • 运行一下:执行脚本,你就能看到大模型对图片的描述。也可以换成自己的图片 URL 试试。

5、让大模型记住上文

前面几段都是一问一答,模型答完就结束了。但真实对话是连续的,比如你问完毛利率怎么算,紧接着问那净利率呢,模型得知道你在接着上文聊,不然它不知道你在说什么。

大模型本身没有记忆,它的上下文全靠 messages 列表来维持。多轮对话的关键就一步:每次拿到回答后,把它以 assistant 角色追加回 messages,这样下一轮提问时模型就能看到完整的历史。

  • 编写multi_turn_chat.py
fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI load_dotenv()llm=ChatOpenAI(model="qwen3.7-max",api_key=os.getenv("API_KEY"),base_url=os.getenv("BASE_URL"))# 1. 初始化对话历史messages=[{"role":"user","content":"毛利率怎么算?"}]# 2. 第一轮对话(流式输出,同时把回答攒下来)print("第一轮回答:")reply=""forchunkinllm.stream(messages):print(chunk.content,end="",flush=True)reply+=chunk.contentprint()# 3. 把模型回答追加回 messages,角色是 assistant# 这步是多轮对话的关键,不塞回去下一轮模型就看不到上文messages.append({"role":"assistant","content":reply})# 4. 追问,这个问题依赖上文messages.append({"role":"user","content":"那净利率呢?和它有什么区别?"})print("\n第二轮回答:")forchunkinllm.stream(messages):print(chunk.content,end="",flush=True)
  • 运行一下:第一轮模型解释毛利率,第二轮它能直接对比净利率和毛利率的区别,不用你再重复一遍背景。

不过 messages 会越攒越长,迟早撑爆模型的上下文窗口。怎么压缩、怎么取舍,就是后面记忆机制要解决的问题,这里先不展开。


三、总结

今天我们搞定了调用大模型的四件事:

  1. 基础对话:实现了最简单的一问一答。
  2. 角色设定:学会了用 System Prompt 控制模型的人设。
  3. 多模态交互:尝试了让模型处理图片。
  4. 多轮对话:学会了用 messages 列表管理对话历史,让模型接得住上下文。

下一步,我们将进入更核心的环节——Function Calling,让大模型从只会说变成能做。


四、LuckReport 项目推荐

导航:LuckReport专栏

1、项目简介

Luck-Report 是一款基于开源项目 UReport2 重构的 Java 高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。相较于 UReport2,在技术架构上进行了全新升级,后端基于 SpringBoot 框架开发、前端采用 Vue 框架构建,技术选型贴合当下主流项目开发标准,可精准适配各类实际开发需求。

Luck-Report 提供了全新的基于网页的报表设计器,可以在 Chrome、Firefox、Edge 等各种主流浏览器运行(IE 浏览器除外)。使用 Luck-Report,打开浏览器即可完成各种复杂报表的设计制作。

Luck-Report 基于 Apache-2.0 开源协议开源

2、在线体验

  • 体验地址:https://www.quzhe.top/luck-report/report/designer
  • 源码地址:https://gitee.com/LuckyPools/luck-report
  • 文档地址:https://www.quzhe.top/luck-report-blog/report
http://www.jsqmd.com/news/1392754/

相关文章:

  • 2026年8月百色屋顶漏水维修哪家好?正规防水修缮科普指南 - 聪居到家
  • 一站式B站视频下载工具BiliTools:跨平台免费,5分钟快速上手
  • Visual C++ 运行库报错不用慌:AIO 工具一行命令装齐 6 大版本
  • 2026长沙公司注销最全避坑指南!别盲目走简易注销,90%老板都踩雷 - 小征每日分享
  • 奇点智能大会参会指南,哪些场次值得优先占位
  • 领创单招招生学校电话在哪里查?各校区**联系方式看这里 - 官方资讯
  • 微信小游戏兼容性测试怎么做?从机型分层到核心链路验证
  • Python如何使用XPath定位没有特征的元素?无id、无class通用定位技巧
  • 2026年进贤县监控安防,本地优质服务商参考 - 官方资讯
  • 储能行业如何打通海外获客渠道?储能海外营销代运营服务商助力B2B海外获客与品牌推广(附带联系方式) - 选型|行业|价格|案例
  • 太原见|易基因科技与您相约2026年度染色质生物学与表观遗传学大会
  • 零剪辑基础也能做:Pixelle-Video帮你10分钟自动生成一条AI短视频
  • 2026贵阳装修设计公司推荐:贵阳绿豆家多维详解 - 深度智识库
  • 猫抓资源嗅探扩展使用路线图:3个成长阶段,把网页视频音频图片全拿下
  • 信号详细讲解
  • 8月到新疆旅游报团价格是多少?新疆旅游团10天9晚价格参考,亲子游纯玩团无购物无隐形消费放心出行 - 跟我去旅游
  • Windows 11 越来越卡?Win11Debloat 一键系统优化与隐私清理终极指南
  • 圈内流传 CTF 完整版入门教程,零基础直达竞赛,错过很难再找到
  • 关于docker的使用心得
  • scrcpy投屏实战指南:不用root,5分钟让电脑接管你的安卓手机
  • 2026年亚马逊账号申诉服务商深度盘点:合规实力口碑兼备的筛选攻略与签约避坑全指南 - U渠道
  • sys-con 手柄插件使用终极指南:免费让 Xbox 与 PlayStation 手柄在 Switch 上一步到位
  • 领创单招招生联系电话在哪里查?这份报名咨询指南请收好 - 官方资讯
  • 一年复读费16800元,考上公办大专后学费仅3500元/年!安徽工贸1+3升学通道招生简章 - 教育为先
  • 985取消长聘制引热议,学术圈要迎来短期主义时代?
  • 北京黄金回收知识科普:足金与 K 金计价逻辑,很多人并不了解 - 大牌科普时报
  • 从零开始玩转 klogg 日志查看器:30 分钟上手极速搜索与超大日志分析
  • 钉钉虚拟定位终极指南:Xposed钉钉辅助模块完整上手攻略
  • PLC培训专业机构 - 米諾
  • Win11Debloat使用教程:三步清理Windows预装软件,免费提升开机速度与隐私保护