尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

【AI】Agent 全栈进阶|大模型基础与对话调用 ◆ 博主名称 QuZhengRongAI俘虏样式苦手⭐️ Agent专栏 Agent⭐️ LuckReport专栏 LuckReport⭐️ SpringBoot专栏 SpringBoot目录一、什么是大模型二、调用大模型接口1、准备工作2、简单的对话3、让大模型扮演角色4、让大模型识别图片5、让大模型记住上文三、总结四、LuckReport 项目推荐1、项目简介2、在线体验上一篇博客我梳理了 Agent 的学习路线这一章开始动手写代码先从最基础的环节——调用大模型对话开始。搞 Agent 绕不开跟大模型打交道学会用代码跟它对话是第一步一、什么是大模型大语言模型LLM基于 Transformer 架构的超大规模神经网络经海量文本训练核心能力是预测下一个词。简单说你问它“11”它能根据学到的知识猜出下一个词是“2”。它并不理解数学运算只是基于统计概率做出预测。Transformer 架构大模型的核心技术其优势在于理解上下文擅长捕捉句子中的逻辑关系和指代如“苹果很好吃它很甜”中的“它”指代苹果。并行处理能同时处理整句话而非逐词顺序处理大幅提升了训练和推理速度。二、调用大模型接口先从零搭一个 Python 项目演示从最基础的对话到进阶的多模态交互。1、准备工作Python 环境建议 3.8 以上版本。API Key调用大模型需要 Key我用阿里百炼来演示它是阿里云的大模型服务平台内置通义千问全系列模型新用户有免费额度。去 阿里百炼官网 注册登录。开通服务后进入 API-KEY 管理页面。点击创建新的 API-KEY把生成的 Key 复制下来。安装依赖库我们用 LangChain 这个框架来调用模型。LangChain 框架一个用于开发大模型应用的开源框架把大模型、提示词、工具、记忆等组件封装成统一接口可以像搭积木一样组合出 AI 应用它的优势如下屏蔽底层差异各模型厂商的 API 各不相同LangChain 提供统一封装换模型只需改个配置不用重写业务代码。生态完整工具调用、RAG、Agent、记忆等组件开箱即用后续进阶不用重复造轮子。社区主流目前最主流的 LLM 应用框架之一遇到问题容易找到解决方案。pipinstalllangchain langchain-openai python-dotenv2、简单的对话先来个最简单的问大模型“毛利率怎么算”。Step 1创建一个.env文件存放我们的 API Key。这样代码里就不用直接写密钥了比较安全。# 阿里百炼 API 配置 API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 阿里百炼 API 地址OpenAI 兼容接口 BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1Step 2编写basic_chat.py脚本。fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI# 加载环境变量从 .env 文件读取配置load_dotenv()# 1. 初始化大模型# 指定模型名称和 API 信息这里用 qwen3.7-max 模型llmChatOpenAI(modelqwen3.7-max,api_keyos.getenv(API_KEY),base_urlos.getenv(BASE_URL))# 2. 准备要问的问题# messages 是一个列表里面放对话历史。这里只有一轮对话角色是 usermessages[{role:user,content:毛利率怎么算}]# 3. 发送请求获取回答# invoke 方法会等待模型生成完整的回答responsellm.invoke(messages)# 4. 打印结果# response.content 就是大模型返回的文本print(大模型回答,response.content)运行一下执行python basic_chat.py你就能看到大模型的回答了。3、让大模型扮演角色刚才的对话里大模型是个百科全书但很多时候我们希望它能扮演特定角色比如客服、作家工程师。这就需要用到系统提示词System Prompt。让我们来让大模型扮演一下“勇哥”360度转一圈编写role_play_chat.pyfromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI load_dotenv()# 初始化大模型llmChatOpenAI(modelqwen3.7-max,api_keyos.getenv(API_KEY),base_urlos.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,flushTrue)运行一下你会发现大模型的回答风格瞬间变了可能会蹦出一句“我滴妈你加盟奶茶店之前看过我视频吗”4、让大模型识别图片现在的大模型已经能处理图片了这叫多模态Multimodal能力。我们可以让它看一张图然后描述内容。编写multimodal_chat.pyfromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessage load_dotenv()# 初始化支持视觉的模型qwen3.7-max 不支持图片输入这里用 qwen3.7-plusllmChatOpenAI(modelqwen3.7-plus,api_keyos.getenv(API_KEY),base_urlos.getenv(BASE_URL))# 1. 构造包含图片的消息# HumanMessage 可以包含多种内容文本、图片等messageHumanMessage([{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]):# flushTrue 让内容立即显示不要等缓冲print(chunk.content,end,flushTrue)运行一下执行脚本你就能看到大模型对图片的描述。也可以换成自己的图片 URL 试试。5、让大模型记住上文前面几段都是一问一答模型答完就结束了。但真实对话是连续的比如你问完毛利率怎么算紧接着问那净利率呢模型得知道你在接着上文聊不然它不知道你在说什么。大模型本身没有记忆它的上下文全靠 messages 列表来维持。多轮对话的关键就一步每次拿到回答后把它以 assistant 角色追加回 messages这样下一轮提问时模型就能看到完整的历史。编写multi_turn_chat.pyfromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI load_dotenv()llmChatOpenAI(modelqwen3.7-max,api_keyos.getenv(API_KEY),base_urlos.getenv(BASE_URL))# 1. 初始化对话历史messages[{role:user,content:毛利率怎么算}]# 2. 第一轮对话流式输出同时把回答攒下来print(第一轮回答)replyforchunkinllm.stream(messages):print(chunk.content,end,flushTrue)replychunk.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,flushTrue)运行一下第一轮模型解释毛利率第二轮它能直接对比净利率和毛利率的区别不用你再重复一遍背景。不过 messages 会越攒越长迟早撑爆模型的上下文窗口。怎么压缩、怎么取舍就是后面记忆机制要解决的问题这里先不展开。三、总结今天我们搞定了调用大模型的四件事基础对话实现了最简单的一问一答。角色设定学会了用 System Prompt 控制模型的人设。多模态交互尝试了让模型处理图片。多轮对话学会了用 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
返回列表