通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI构建智能体:基于Agent框架的自动化任务规划
本文介绍了如何在星图GPU平台上自动化部署通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI镜像,以构建具备任务规划能力的智能体。该智能体能够理解复杂指令,通过调用外部工具(如天气查询API)完成多步骤任务,典型应用场景包括根据实时天气自动生成个性化的穿搭建议。
通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI构建智能体:基于Agent框架的自动化任务规划
想象一下,你有一个能听懂你复杂指令的“数字助理”。你告诉它:“帮我查一下北京的天气,然后根据天气推荐一下明天的穿搭,最后把结果整理成一份简洁的备忘录。” 它不会只回复一句“好的”,而是会自己思考:第一步,我需要调用天气查询工具;第二步,我需要根据天气结果(比如温度、是否下雨)来推理穿搭建议;第三步,我需要把前两步的结果整合成一段通顺的文字。
这就是智能体(Agent)的魅力。它不再是一个简单的问答机器,而是一个具备规划、推理和行动能力的“大脑”。今天,我们就来聊聊如何利用通义千问1.5-1.8B-Chat-GPTQ-Int4这个轻量级但能力不俗的模型,通过WebUI,亲手搭建一个能处理多步骤复杂任务的自动化智能体。我们将聚焦于一个非常实用的场景:天气查询与穿搭推荐,并完整拆解其背后的任务分解、工具调用与结果整合逻辑。
1. 为什么需要智能体?从“问答”到“行动”的跨越
传统的对话模型,你问什么,它答什么,答案基于其训练时学到的知识。但现实世界的问题往往是动态的、需要最新数据的。比如“北京现在天气怎么样?”,模型可能基于过时的数据回答,或者干脆说“我不知道”。
智能体框架解决了这个问题。它的核心思想是赋予模型“使用工具”的能力。模型本身作为“大脑”,负责理解你的意图、制定计划、做出决策;而各种工具(如计算器、搜索引擎API、数据库)则是它的“手和脚”,负责执行具体操作、获取实时信息。
对于通义千问1.5-1.8B-Chat-GPTQ-Int4这类模型来说,扮演“大脑”角色非常合适:
- 轻量高效:经过GPTQ-Int4量化后,模型体积小,推理速度快,非常适合作为需要快速响应的智能体核心。
- 指令遵循能力强:在对话格式上训练良好,能准确理解用户复杂的、多步骤的指令。
- 具备基础推理能力:能够进行简单的逻辑链条推理,比如“如果下雨,那么需要带伞”。
我们的目标,就是为这个“大脑”配上“工具”,并设计一套机制,让它能自主地规划和使用这些工具来完成任务。
2. 智能体系统核心组件设计
要构建一个智能体,我们需要搭建几个关键部分。你可以把它们想象成一个团队:任务规划师、工具管理员和结果合成器。
2.1 大脑:通义千问模型与提示工程
模型是我们的核心决策者。我们需要通过精心设计的“系统提示词”来赋予它智能体的身份和能力。
这个提示词需要明确告诉模型:
- 你是谁:你是一个智能助手,可以调用工具。
- 你能用什么工具:清晰列出每个工具的名称、功能描述和输入格式。
- 你应该怎么思考:遵循“思考 -> 行动 -> 观察”的循环。先思考需要做什么,然后选择工具并调用,最后解析工具返回的结果。
- 你最终要输出什么:当所有必要步骤完成后,整合所有信息,给用户一个完整、友好的最终答案。
下面是一个简化的系统提示词示例:
你是一个智能生活助手,可以调用外部工具来获取信息。请严格按照以下步骤工作:
可用工具:
- `get_weather`:查询城市天气。输入格式:`{"city": "城市名"}`。返回该城市的天气状况,如温度、天气现象。
- `get_clothing_suggestion`:根据天气条件生成穿搭建议。输入格式:`{"weather_description": "天气描述,如‘晴,25度’"}`。返回穿衣建议。
工作流程:
1. 理解用户请求。
2. 判断是否需要调用工具以及调用哪个工具。如果需要,则生成对应的工具调用JSON。
3. 等待工具返回结果。
4. 根据工具结果,决定下一步是继续调用工具,还是整合信息生成最终答案。
5. 生成最终答案时,需综合所有步骤获得的信息,回答应完整、自然。
当前对话:
{chat_history}
用户:{user_input}
2.2 工具集:赋予智能体“手脚”
工具是智能体与外界交互的接口。在我们的穿搭推荐场景中,至少需要两个工具:
-
天气查询工具 (
get_weather):这是一个模拟工具,在实际应用中,你可以接入心知天气、和风天气等API。这里我们用一个函数模拟。import random def get_weather(city: str) -> str: """模拟天气查询API""" weather_options = [ f"{city}今天晴,气温15-25度,微风。", f"{city}今天多云转阴,气温10-18度,东北风3-4级。", f"{city}今天有雨,气温8-12度,记得带伞。", f"{city}今天晴间多云,气温22-30度,紫外线较强。" ] return random.choice(weather_options) # 模拟API返回 -
穿搭建议工具 (
get_clothing_suggestion):这个工具接收天气描述,基于简单规则生成建议。你也可以把它做成一个调用大模型生成建议的模块。def get_clothing_suggestion(weather_desc: str) -> str: """根据天气描述生成穿搭建议""" if "雨" in weather_desc: return "建议穿着:防水外套或雨衣、速干裤、防滑鞋。携带雨伞。" elif "高温" in weather_desc or "30度" in weather_desc: return "建议穿着:短袖T恤、短裤/裙子、凉鞋。注意防晒,可戴帽子和墨镜。" elif "低温" in weather_desc or "10度" in weather_desc: return "建议穿着:毛衣、厚外套、长裤、保暖鞋。注意防风。" else: return "建议穿着:长袖衬衫、薄外套、休闲裤、运动鞋。舒适为主。"
2.3 控制流:任务规划与执行的引擎
这是智能体的“神经系统”,负责协调大脑和工具。它的工作流程是一个循环:
- 解析用户输入:将用户问题和对话历史,结合系统提示词,提交给通义千问模型。
- 解析模型响应:模型可能会返回两种内容:
Action: 一个JSON,表明它想调用某个工具。例如:{"action": "get_weather", "action_input": {"city": "北京"}}Final Answer: 一段文本,表明它认为任务已完成,输出最终答案。
- 执行工具调用:如果解析到
Action,则找到对应的工具函数,传入参数并执行。 - 反馈观察结果:将工具执行的结果(
Observation)作为新的上下文,连同历史记录,再次提交给模型。 - 循环判断:模型根据新的观察结果,决定下一步是继续调用工具,还是给出最终答案。重复步骤2-4,直到模型输出
Final Answer。
3. 基于WebUI的智能体搭建实战
我们假设你已经通过CSDN星图镜像广场部署好了通义千问1.5-1.8B-Chat-GPTQ-Int4的WebUI界面。下面是如何在其基础上集成智能体逻辑。
3.1 后端逻辑整合
你需要在WebUI的后端服务(通常是基于Gradio或Streamlit)中,添加一个处理智能体逻辑的模块。核心是一个AgentExecutor类或函数。
import json
import re
class SimpleAgent:
def __init__(self, llm_chain, tools):
self.llm_chain = llm_chain # 封装了与通义千问模型对话的链
self.tools = {tool.name: tool for tool in tools} # 工具字典
def parse_model_output(self, text: str):
"""解析模型输出,判断是调用工具还是最终回答"""
# 尝试匹配类似 Toold的JSON字符串
action_match = re.search(r'```json\s*(.*?)\s*```', text, re.DOTALL)
if action_match:
try:
action_data = json.loads(action_match.group(1))
if "action" in action_data and "action_input" in action_data:
return "action", action_data
except json.JSONDecodeError:
pass
# 如果没有找到规范的JSON,或者模型直接给出了文本回答
return "answer", text
def run(self, user_input: str, chat_history: list):
"""执行智能体循环"""
max_steps = 5 # 防止无限循环
current_step = 0
intermediate_observations = []
while current_step < max_steps:
# 1. 构建当前提示,包含历史、观察和用户输入
prompt = self._build_prompt(user_input, chat_history, intermediate_observations)
# 2. 调用通义千问模型
model_response = self.llm_chain.predict(human_input=prompt)
# 3. 解析响应
response_type, content = self.parse_model_output(model_response)
if response_type == "action":
# 4. 执行工具调用
action_name = content["action"]
action_input = content["action_input"]
if action_name in self.tools:
tool_result = self.tools[action_name].run(action_input)
intermediate_observations.append(f"工具 {action_name} 返回: {tool_result}")
else:
intermediate_observations.append(f"错误: 未知工具 {action_name}")
else: # response_type == "answer"
# 5. 返回最终答案
final_answer = content
# 清理答案中可能残留的指令标记
final_answer = final_answer.replace("Final Answer:", "").strip()
return final_answer
current_step += 1
return "任务处理超时或过于复杂,请简化您的请求。"
def _build_prompt(self, user_input, chat_history, observations):
# 这里整合系统提示词、对话历史、工具观察和当前用户输入
# 具体实现取决于你的提示词模板设计
pass
3.2 前端界面展示
在WebUI的聊天界面中,你需要区分普通聊天模式和智能体模式。可以添加一个复选框或按钮,如“启用智能体模式”。
当用户勾选此模式并输入复杂指令(如“查北京天气并推荐穿搭”)后,前端将请求发送到集成了SimpleAgent的后端。后端会运行智能体循环,并将整个过程(“思考:需要先查天气...”、“调用工具:get_weather...”、“观察:北京晴,25度...”、“思考:根据天气生成穿搭建议...”、“最终答案:...”)以结构化的方式(如可折叠的卡片)返回给前端展示。
这让用户不仅能得到结果,还能清晰看到智能体“思考”和“行动”的每一步,增加透明度和趣味性。
4. 效果展示:智能体如何一步步完成任务
让我们看看,当用户输入“帮我规划一下,如果明天上海下雨,我出门应该怎么穿?”时,这个智能体是如何工作的。
用户输入:“帮我规划一下,如果明天上海下雨,我出门应该怎么穿?”
智能体内部流程:
- 思考1:用户想知道下雨天的穿搭。这需要先确认上海的天气,再根据天气给建议。我需要调用
get_weather工具。 - 行动1:调用
get_weather,输入{"city": "上海"}。 - 观察1:工具返回:“上海今天有雨,气温8-12度,记得带伞。”
- 思考2:已经确认有雨。现在需要调用
get_clothing_suggestion工具来获取具体穿搭建议。 - 行动2:调用
get_clothing_suggestion,输入{"weather_description": "有雨,气温8-12度"}。 - 观察2:工具返回:“建议穿着:防水外套或雨衣、速干裤、防滑鞋。携带雨伞。”
- 思考3:我已经获得了天气信息和穿搭建议。现在需要整合这些信息,给用户一个完整、自然的回答。
- 最终答案:“根据查询,上海明天预计有雨,气温在8-12度之间。这样的天气出门,建议您穿上防水外套或雨衣,搭配速干裤和防滑鞋,确保身体干燥和行走安全。最重要的是,别忘了带上一把伞。这样的搭配可以帮您应对雨天,保持舒适。”
通过这个流程,智能体自动完成了“查询天气 -> 分析结果 -> 获取建议 -> 整合回复”的全过程。用户得到的是一个信息完整、直接可用的答案,而不是零散的、需要自己拼凑的信息。
5. 总结
将通义千问1.5-1.8B-Chat-GPTQ-Int4这样的模型与Agent框架结合,通过WebUI进行部署,为我们打开了一扇构建实用、个性化智能应用的大门。它不再是简单的聊天窗口,而是一个能自主规划、调用工具、解决复杂任务的智能中枢。
这种模式的优点很明显:解耦了知识(模型)与行动(工具)。模型负责其擅长的理解与推理,工具负责提供精准、实时的外部能力。无论是天气穿搭、旅行规划、数据分析还是信息检索,你都可以通过定义不同的工具集,让同一个模型“大脑”胜任多种角色。
动手尝试搭建这样一个智能体的过程,也是深入理解模型能力边界和提示工程技巧的好机会。你会发现,如何设计清晰、无歧义的系统提示,如何构建稳定可靠的工具解析逻辑,是让智能体真正“智能”起来的关键。从这个小实验开始,你可以逐步扩展工具库,尝试更复杂的任务链条,探索智能体技术的更多可能性。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)