Phi-3-mini-128k-instruct构建智能体(Agent):基于Skills框架的任务自动化

Phi-3-mini-128k-instruct构建智能体(Agent):基于Skills框架的任务自动化 Phi-3-mini-128k-instruct构建智能体Agent基于Skills框架的任务自动化你是不是也遇到过这种情况想查一下某个城市明天的天气再顺便看看当地有什么特色美食最后规划一下出行路线。这一套操作下来你得打开好几个网页在不同应用间来回切换费时又费力。如果有一个“数字助理”你只需要对它说一句话它就能自动帮你完成这一系列任务那该多好。现在这不再是科幻电影里的场景。借助像Phi-3-mini-128k-instruct这样轻量但强大的语言模型以及专门为构建智能体而设计的Skills框架我们完全可以打造一个属于自己的、能理解复杂指令并自动执行任务的智能助手。今天我们就来聊聊怎么动手实现它。1. 智能体与Skills框架你的数字大脑和工具箱在开始动手之前我们先花几分钟把核心概念搞清楚。这样后面操作起来你会更明白每一步在做什么。简单来说智能体Agent就像一个拥有“大脑”和“手脚”的虚拟助手。它的“大脑”负责理解你想让它做什么并规划出一步步的行动方案而“手脚”就是各种工具比如搜索网页、计算、读写文件等用来执行具体的动作。那么Skills框架是什么呢你可以把它想象成一个高度组织化的“工具箱”和“操作手册”的集合。这个框架做了两件关键事标准化工具它把各种功能搜索、计算等都包装成统一的、易于被“大脑”调用的工具Skill。提供执行蓝图它定义了一套清晰的规则告诉“大脑”如何思考“我现在该做什么”、如何选择工具“这一步该用哪个工具”以及如何处理结果“工具返回的结果是什么意思下一步怎么办”。而Phi-3-mini-128k-instruct在这里扮演的就是那个“大脑”的角色。它是一个经过专门训练的语言模型特别擅长理解带有指令的对话并根据上下文进行推理和规划。它的“迷你”体型意味着对计算资源要求不高普通电脑也能跑起来但“128k”的超长上下文能力又让它能记住和处理非常复杂的多轮对话和任务步骤。把它们组合起来流程就清晰了你给智能体下达一个复杂指令 - Phi-3模型作为大脑理解指令并规划步骤 - 大脑根据Skills框架的规则决定调用哪个工具 - 工具执行并返回结果 - 大脑分析结果决定下一步是继续调用工具还是任务完成最后给你一个完整的答案。2. 环境搭建与核心组件部署理论说完了我们开始动手。首先得把“工作台”搭起来。整个过程就像拼装乐高一步步来并不复杂。2.1 基础环境准备你需要一个安装了Python建议3.8以上版本的环境。打开你的终端或命令行工具我们先为这个项目创建一个独立的空间避免和其他项目冲突。# 创建一个新的项目目录 mkdir phi3-skills-agent cd phi3-skills-agent # 创建并激活一个虚拟环境可选但强烈推荐 python -m venv venv # 在Windows上激活 # venv\Scripts\activate # 在MacOS/Linux上激活 # source venv/bin/activate2.2 安装核心依赖接下来安装我们需要的“乐高积木”。这里主要需要两个包一个是运行Phi-3模型的框架我们选用流行的transformers另一个就是skills智能体框架本身。pip install transformers torch skillstransformers和torch这是Hugging Face提供的库让我们能够方便地加载和使用Phi-3这样的预训练模型。skills这就是我们智能体的核心框架。安装过程可能会花几分钟取决于你的网络速度。2.3 初始化Skills智能体环境准备好后我们来初始化一个最简单的智能体看看它最基本的样子。创建一个名为demo_agent.py的Python文件。from skills import Agent, Runner from skills.llms import TransformersLLM from skills.memory import SimpleMemory import torch # 1. 加载Phi-3-mini作为智能体的“大脑”语言模型 print(正在加载Phi-3-mini模型这可能需要几分钟...) llm TransformersLLM( model_idmicrosoft/Phi-3-mini-128k-instruct, # 模型名称 torch_dtypetorch.float16, # 使用半精度浮点数节省内存 device_mapauto # 自动选择使用CPU或GPU ) # 2. 给智能体一个简单的记忆系统让它能记住对话历史 memory SimpleMemory() # 3. 创建智能体实例目前它还没有任何工具Skills agent Agent(llmllm, memorymemory) # 4. 创建一个运行器用来驱动智能体 runner Runner(agentagent) # 5. 让我们问它一个简单问题 print(\n--- 智能体测试 ---) response runner.run(你好请介绍一下你自己。) print(f智能体回复: {response})运行这个脚本 (python demo_agent.py)。第一次运行会下载Phi-3-mini模型文件比较大需要耐心等待。下载完成后你应该能看到模型加载的信息以及智能体生成的一段自我介绍。看到回复了吗这说明你的“数字大脑”已经成功启动并运行了不过现在的它还是一个“光杆司令”只有思考能力没有执行任务的“手脚”。接下来我们就给它装备上强大的工具。3. 为智能体装备实用技能Skills一个只会聊天的助手用处有限真正的价值在于它能“做事”。Skills框架自带了一些非常实用的内置工具让我们把它们添加给智能体。3.1 加载内置技能搜索与计算我们修改一下demo_agent.py赋予智能体搜索网页和进行复杂计算的能力。from skills import Agent, Runner from skills.llms import TransformersLLM from skills.memory import SimpleMemory from skills.skills import SerperSkill, CalculatorSkill # 导入新的技能 import torch print(正在加载Phi-3-mini模型与技能...) llm TransformersLLM( model_idmicrosoft/Phi-3-mini-128k-instruct, torch_dtypetorch.float16, device_mapauto ) memory SimpleMemory() # 关键步骤创建技能实例 search_skill SerperSkill() # 网络搜索技能需要API密钥后文讲 calc_skill CalculatorSkill() # 数学计算技能 # 创建智能体时通过 skills 参数传入技能列表 agent Agent( llmllm, memorymemory, skills[search_skill, calc_skill] # 现在智能体拥有了搜索和计算能力 ) runner Runner(agentagent) # 测试一个需要计算的问题 print(\n--- 测试计算技能 ---) query1 “如果一支钢笔15元我买8支总共需要多少钱” response1 runner.run(query1) print(f问题: {query1}) print(f回答: {response1}\n) # 测试一个需要搜索的问题这里先模拟因为还没配API key print(--- 测试搜索技能模拟---) query2 “谁是《哈利·波特》的作者” # 注意由于没有配置Serper API密钥实际运行可能会报错或使用模拟模式。 # 我们暂时先注释掉运行配置好密钥后再测试。 # response2 runner.run(query2) # print(f问题: {query2}) # print(f回答: {response2})运行这段代码你会看到智能体成功调用了计算器技能给出了“15*8120”的正确结果。它内部的过程是模型“思考”后认为这个问题需要计算于是调用了CalculatorSkill得到结果后再组织成自然语言回复给你。3.2 配置搜索技能API要让网络搜索技能真正工作你需要一个Serper的API密钥。Serper是一个提供搜索结果的API服务。访问 serper.dev 注册一个免费账户。在控制台找到你的API密钥。在代码中配置它import os os.environ[“SERPER_API_KEY”] “你的实际API密钥” # 替换成你的密钥 search_skill SerperSkill() # 现在这个技能就能正常工作了取消之前注释掉的搜索测试代码再次运行你的智能体就能告诉你J.K.罗琳是《哈利·波特》的作者了。4. 实战构建个人自动化助理现在我们的智能体既有大脑Phi-3又有手脚搜索、计算技能。让我们来看两个更贴近生活的实际应用场景感受一下它的威力。4.1 场景一综合信息查询与规划想象一下周末出游规划。传统方式你需要手动进行多次搜索。现在交给智能体。# 接续之前的代码使用已配置好技能的runner complex_query “”” 帮我规划一下本周末北京一日游。 请先查一下周六北京的天气情况然后推荐两个适合当天天气的市内景点 最后估算一下如果两个人出行交通和午餐大概需要多少预算。 “”” print(“\n--- 执行复杂规划任务 ---“) print(f“用户请求: {complex_query}”) final_answer runner.run(complex_query) print(f“\n智能体回复:\n{final_answer}”)当你运行这段代码智能体会开始它的“思考-行动”循环思考理解任务包含三个子任务查天气、找景点、算预算。行动1调用SerperSkill搜索“北京周六天气”。思考分析天气结果比如是晴天。行动2再次调用SerperSkill搜索“北京 适合晴天的市内景点”并挑选两个。行动3调用CalculatorSkill基于景点门票、交通费、餐费进行估算。最终回复将天气、景点推荐和预算估算整合成一段流畅的文字回复给你。整个过程完全自动化你只需要提出一个复杂的请求就能得到一份整合了多方信息的定制化方案。4.2 场景二自动化办公与数据处理除了对外查询智能体也能处理你本地的信息和任务。Skills框架允许你创建自定义技能。例如我们可以创建一个简单的“文件阅读”技能这里用读取文本文件举例。from skills.skill import Skill from pydantic import Field class ReadFileSkill(Skill): “”“一个简单的自定义技能用于读取文本文件内容。”“” name: str “read_file” description: str “读取指定路径的文本文件并返回其内容。” file_path: str Field(…, description“需要读取的文本文件的完整路径”) def execute(self): try: with open(self.file_path, ‘r’, encoding‘utf-8’) as f: content f.read() return f“文件 ‘{self.file_path}’ 的内容如下\n{content}” except FileNotFoundError: return f“错误找不到文件 ‘{self.file_path}’。” except Exception as e: return f“读取文件时出错{str(e)}” # 将自定义技能加入智能体 file_skill ReadFileSkill() agent_with_file Agent(llmllm, memorymemory, skills[search_skill, calc_skill, file_skill]) file_runner Runner(agentagent_with_file) # 假设你有一个记录待办事项的 todo.txt 文件 task_query “请读取我桌面上的todo.txt文件告诉我今天有哪些任务并估算一下完成所有任务大概需要多少小时” # 注意需要将路径替换为你的实际文件路径 response file_runner.run(task_query, skill_args_overrides{“read_file”: {“file_path”: “/Users/你的用户名/Desktop/todo.txt”}}) print(response)这个例子展示了智能体如何将外部信息获取搜索、内部信息处理读文件和逻辑推理估算时间结合起来完成一个办公自动化任务。你可以在此基础上扩展出写文件、发邮件、分析数据等更多自定义技能。5. 开发实践与优化建议在实际使用和开发中有几个小技巧能让你的智能体更聪明、更可靠。给智能体清晰的指令智能体的表现很大程度上取决于你如何描述任务。像“总结一下”比“处理一下”要好“用三点列出优缺点”比“说说好坏”更明确。在提问时尽量提供背景和约束条件。管理对话历史SimpleMemory会记住所有对话。对于非常长的会话这可能影响性能或导致模型遗忘开头的内容。对于超长任务你可以策略性地选择是否将中间步骤存入记忆或者定期进行总结。技能冲突与选择当你为智能体装备了很多技能时有时它可能困惑于该用哪个。你可以在定义技能时通过description字段尽可能清晰地描述每个技能的用途和适用场景帮助模型做出更准确的选择。错误处理工具执行可能会失败如网络超时、文件不存在。一个健壮的智能体应该能处理这些错误。在自定义技能中确保做好异常捕获并返回清晰的错误信息这样模型才能理解发生了什么并可能尝试其他方案或向你求助。6. 总结回过头看我们完成了一件挺酷的事用一个几行代码就能加载的轻量模型Phi-3-mini加上一个设计精巧的Skills框架搭建了一个能听会想、能说会做的智能体。它不再是那种只能简单问答的聊天机器人而是一个可以真正规划步骤、调用工具、执行复杂任务的自动化助手。从查天气规划行程到读文件管理任务我们看到了它在个人助理和自动化办公场景下的潜力。而且这套组合的“门槛”并不高不需要庞大的服务器集群在普通的开发机甚至一些配置不错的个人电脑上都能跑起来这让更多人有兴趣去尝试和创造。当然这只是一个起点。Skills框架的生态还在成长你可以探索更多的内置技能或者发挥创意为你特定的工作流定制专属技能。比如接入日历API让它帮你安排会议连接数据库让它做数据分析报告可能性非常多。用Phi-3-mini这样的高效模型作为大脑意味着你的智能体可以快速响应同时处理相当复杂的逻辑链条。如果你已经跟着步骤跑通了示例我建议你接下来可以试试给它一个新的挑战比如“帮我对比一下最近三款热门手机的参数和价格然后推荐一款性价比高的”。看看它如何协调搜索、信息提取和判断推理。在这个过程中你可能会更直观地感受到智能体技术如何将语言模型的“思考”能力真正转化为解决实际问题的“行动”能力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。