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