Phi-3 Forest Laboratory 构建技能智能体让AI帮你自动干活你是不是经常觉得每天的工作里有很多重复、繁琐的任务比如老板随口问一句“上个月华东区的销售数据怎么样”你就得打开数据库回忆表结构吭哧吭哧写SQL跑出结果再整理成报告。这个过程费时费力不说还容易出错。现在有个新思路能不能训练一个“数字助理”让它听懂你的话自己去把活干了比如你直接问它“帮我查查上个月华东区的销售Top 10产品”它就能自己理解你的意思生成正确的SQL执行查询然后把结果用清晰的表格或图表给你。这听起来像科幻但利用像Phi-3 Forest Laboratory这样的轻量级大模型再结合“技能智能体”的框架完全可以在本地或私有环境里实现。今天我们就来聊聊怎么用Phi-3亲手搭建一个能自动化处理工作流的“技能智能体”。1. 技能智能体你的专属自动化“外挂”在深入技术细节前我们先搞明白到底什么是“技能智能体”。你可以把它想象成一个高度专业化的AI员工。传统聊天机器人你问“今天天气怎么样”它去调用一个天气API然后把结果读给你。它的能力是固定的仅限于预设的几个API。技能智能体它的“技能”是可以被定义和扩展的。核心在于它不仅能理解你的意图还能自主决定调用哪个工具比如写SQL、发邮件、分析文档并按照正确的流程执行最终给你一个完整的结果。它处理的是一个“工作流”而不仅仅是一个“问答”。举个例子一个“数据分析技能智能体”的工作流可能是理解你问“对比一下Q1和Q2各产品线的利润率。”规划智能体思考这需要“查询Q1销售数据”、“查询Q2销售数据”、“计算利润率”、“生成对比图表”。执行它依次调用“数据库查询工具”和“图表生成工具”。回复它把最终的对比图表和分析摘要一并交给你。这个过程中智能体展现了理解、规划、工具调用、执行的综合能力。而Phi-3这类模型正是实现“理解”和“规划”大脑的关键。2. 为什么选择Phi-3 Forest Laboratory市面上大模型很多为什么要选Phi-3来构建智能体呢主要是因为它有几个特别适合“干活”的优点身材小本事大Phi-3系列模型参数规模相对较小如3.8B但对指令的理解和遵循能力却很强。这意味着它可以在消费级显卡甚至CPU上快速运行部署成本低响应速度快非常适合作为高频调用的智能体“大脑”。“听话”且精准在工具调用Tool Calling和函数调用Function Calling任务上经过精调的Phi-3表现非常出色。它能严格按照你定义的格式输出比如准确生成一个结构化的JSON来调用工具减少错误。私有化部署友好所有计算都在本地或你的私有服务器上完成业务数据、查询逻辑完全不用出公司网络安全性有保障。高性价比对于企业内部的自动化流程使用GPT-4等大型API可能成本高昂。Phi-3提供了一个性能足够且成本可控的替代方案。Forest Laboratory通常指的是一套围绕Phi-3的实践环境或工具集帮助我们更方便地调试、组合和部署基于Phi-3的智能体应用。我们可以在这个“实验室”里精心设计智能体的能力。3. 动手搭建一个数据查询技能智能体理论说了不少我们来点实际的。假设我们要构建一个“数据查询技能智能体”它的核心技能是将用户的自然语言问题转化为可执行的SQL查询。3.1 设计智能体的“工具箱”智能体要干活得有工具。首先我们定义一个最核心的工具query_database。 这个工具接受一个参数sql_querySQL查询语句。在真实场景中这个函数会连接数据库并执行查询。# 工具函数的示例 import sqlite3 # 示例使用SQLite实际可能是MySQL、PostgreSQL等 import pandas as pd def query_database(sql_query: str): 根据输入的SQL查询语句查询数据库并返回结果。 参数: sql_query (str): 合法的SQL SELECT查询语句。 返回: str: 查询结果以表格字符串形式返回。如果出错返回错误信息。 # 连接到你的数据库这里用SQLite示例 conn sqlite3.connect(your_database.db) try: # 使用pandas直接读取SQL方便转换为字符串表格 df pd.read_sql_query(sql_query, conn) conn.close() # 将DataFrame转换为一个格式清晰的字符串表格 return df.to_string(indexFalse) except Exception as e: conn.close() return f查询执行出错: {str(e)}3.2 定义智能体的“大脑”与沟通规则接下来我们需要告诉Phi-3两件事它有哪些工具可以用上面定义的query_database。它应该如何思考以及以什么格式回复我们。这通过系统提示词来实现。系统提示词就像是智能体的岗位说明书和操作手册。system_prompt 你是一个专业的数据分析师助理擅长将用户关于数据的问题转化为精确的SQL查询。 # 你的能力 你拥有以下工具 - query_database: 执行SQL查询。输入应为标准的SQL SELECT语句。 # 你的工作流程 1. 仔细分析用户的问题理解其背后的数据需求。 2. 根据需求在脑海中构思出正确的SQL查询语句。确保表名、字段名正确WHERE条件准确。 3. **必须**使用提供的query_database工具来执行查询。 4. 将工具返回的数据结果用清晰、易懂的语言总结给用户。如果结果数据较多可以指出关键趋势或数据点。 # 输出格式 你必须严格按以下JSON格式回应只输出这个JSON对象不要有任何其他解释 { thought: 你的思考过程解释你将如何分析问题并构建SQL。, tool_call: { name: 工具名例如query_database, args: { sql_query: 你构建的完整SQL语句 } } } # 注意事项 - 只查询数据绝不执行INSERT、UPDATE、DELETE等写操作。 - 如果用户问题模糊请先在thought字段里请求澄清。 - SQL语句中请使用反引号()来包裹表名和字段名避免语法错误。 这个提示词定义了智能体的角色、工具、工作流程和严格的输出格式。强制输出JSON是为了让我们的程序能可靠地解析它的决策并调用相应的工具。3.3 组装智能体的“工作流水线”现在我们把大脑Phi-3、说明书系统提示词和工具组装起来形成一个可以自动运行的流水线。import json from phi3_inference import Phi3Client # 假设的Phi-3调用客户端实际需替换为你的加载方式 class DataQueryAgent: def __init__(self, model_client): self.client model_client self.system_prompt system_prompt # 上文定义的系统提示词 self.tools { query_database: query_database # 注册工具 } def run(self, user_query): # 1. 构建对话历史系统提示 用户问题 messages [ {role: system, content: self.system_prompt}, {role: user, content: user_query} ] # 2. 调用Phi-3模型获取智能体的决策JSON格式 response self.client.chat_completion(messages) agent_response response[choices][0][message][content] # 3. 解析智能体的决策 try: decision json.loads(agent_response) thought_process decision.get(thought, ) tool_call decision.get(tool_call, {}) print(f[智能体思考]: {thought_process}) # 4. 执行工具调用 tool_name tool_call.get(name) tool_args tool_call.get(args, {}) if tool_name in self.tools: tool_function self.tools[tool_name] result tool_function(**tool_args) # 执行工具例如 query_database(sql_querySELECT ...) return result else: return f错误智能体请求了未知工具 {tool_name} except json.JSONDecodeError: return f错误无法解析智能体的响应。原始响应{agent_response} # 初始化智能体 phi3_client Phi3Client() # 初始化你的Phi-3模型 agent DataQueryAgent(phi3_client) # 使用智能体 user_question 我们销量最高的前五个产品是什么 result agent.run(user_question) print(查询结果) print(result)3.4 看看它怎么工作假设你的数据库里有个sales表有product_name和quantity_sold字段。你的输入“我们销量最高的前五个产品是什么”智能体的思考在thought字段“用户想知道销量排名前五的产品。我需要查询sales表按quantity_sold降序排列然后取前五条记录。”智能体的行动它生成一个JSON其中tool_call.args.sql_query是SELECT product_name, quantity_sold FROM sales ORDER BY quantity_sold DESC LIMIT 5程序执行agent.run函数解析出这个SQL调用query_database工具连接到数据库执行并将结果返回。最终输出程序会打印出智能体的思考过程以及一个包含前五名产品名称和销量的表格字符串。4. 从“查询”到“工作流”扩展智能体的技能一个只会查数据的智能体已经很有用了但真正的威力在于组合多个技能处理复杂工作流。假设我们扩展一下让智能体不仅能查数据还能把结果做成图表并邮件发送给相关人员。定义新工具generate_chart(data, chart_type): 接收数据如上面的查询结果和图表类型如‘bar’, ‘line’生成图表图片。send_email(to, subject, body, attachment_path): 发送邮件。升级系统提示词在提示词中描述这三个工具并指导智能体“如果用户要求分析数据并发送报告你应该先调用query_database然后用结果调用generate_chart最后调用send_email。”升级智能体逻辑智能体的输出JSON可能需要包含一个计划plan里面按顺序排列多个工具调用。或者设计成链式调用执行第一个工具将结果连同原始问题再次喂给智能体让它决定下一步做什么。这更接近智能体的“规划”能力。# 一个简化的多步骤示例非完整代码 user_ask “分析一下过去半年各月的销售额趋势做成折线图然后发邮件给我老板。” # 第一轮智能体可能决定先查数据 # 执行 query_database(sql_querySELECT month, sales FROM ...) # 将查询结果作为新上下文再次询问智能体 new_context f“查询到的数据是{data_result}。用户原要求是{user_ask}” # 第二轮智能体看到数据决定生成图表 # 执行 generate_chart(datadata_result, chart_typeline) # 第三轮智能体拿到图表文件路径决定发送邮件 # 执行 send_email(tobosscompany.com, subject销售额趋势报告, ...)5. 构建可靠技能智能体的几个关键点在实际项目中要让智能体真正可靠地工作还需要注意以下几点清晰的技能边界在提示词里明确告诉智能体“你能做什么不能做什么”。比如严格禁止它生成任何删除数据的SQL。结构化输出是生命线强制要求JSON等结构化输出是程序与模型稳定交互的基础。Phi-3在这方面的服从性很好但仍需在提示词中反复强调格式。错误处理与安全工具函数内部必须有完善的错误捕获如SQL语法错误、数据库连接失败。对于查询类工具可以考虑在执行前加入一层简单的SQL语法或操作类型检查防止意外。给模型足够的上下文如果查询涉及复杂的业务表结构可以把关键的表名和字段名描述作为知识放在系统提示词里帮助模型生成更准确的SQL。持续迭代与评估收集智能体出错的案例分析是提示词不清晰、工具定义有问题还是模型能力不足。用这些案例不断优化你的系统。用Phi-3 Forest Laboratory构建技能智能体就像是在组装一个乐高机器人。模型是它的大脑提示词是它的程序工具函数是它的手脚。从一个简单的数据查询助手开始你可以不断为它添加新的工具连接CRM、操作日历、生成文档让它处理越来越复杂的业务流程。这个过程最有意思的部分在于你是在定义一种新的、与计算机交互的方式。你不再需要记住复杂的查询语法或软件操作路径你只需要用最自然的话告诉你的智能体你想要什么。它负责把“想法”拆解成“步骤”并驱动工具去完成。虽然目前它还无法处理极端复杂和模糊的任务但对于大量规则相对明确、流程固定的日常工作技能智能体已经是一个强大的生产力杠杆。不妨就从今天介绍的“数据查询智能体”开始试着让它帮你自动化第一个工作流吧。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
Phi-3 Forest Laboratory 构建技能智能体(Skills Agent):自动化处理工作流
Phi-3 Forest Laboratory 构建技能智能体让AI帮你自动干活你是不是经常觉得每天的工作里有很多重复、繁琐的任务比如老板随口问一句“上个月华东区的销售数据怎么样”你就得打开数据库回忆表结构吭哧吭哧写SQL跑出结果再整理成报告。这个过程费时费力不说还容易出错。现在有个新思路能不能训练一个“数字助理”让它听懂你的话自己去把活干了比如你直接问它“帮我查查上个月华东区的销售Top 10产品”它就能自己理解你的意思生成正确的SQL执行查询然后把结果用清晰的表格或图表给你。这听起来像科幻但利用像Phi-3 Forest Laboratory这样的轻量级大模型再结合“技能智能体”的框架完全可以在本地或私有环境里实现。今天我们就来聊聊怎么用Phi-3亲手搭建一个能自动化处理工作流的“技能智能体”。1. 技能智能体你的专属自动化“外挂”在深入技术细节前我们先搞明白到底什么是“技能智能体”。你可以把它想象成一个高度专业化的AI员工。传统聊天机器人你问“今天天气怎么样”它去调用一个天气API然后把结果读给你。它的能力是固定的仅限于预设的几个API。技能智能体它的“技能”是可以被定义和扩展的。核心在于它不仅能理解你的意图还能自主决定调用哪个工具比如写SQL、发邮件、分析文档并按照正确的流程执行最终给你一个完整的结果。它处理的是一个“工作流”而不仅仅是一个“问答”。举个例子一个“数据分析技能智能体”的工作流可能是理解你问“对比一下Q1和Q2各产品线的利润率。”规划智能体思考这需要“查询Q1销售数据”、“查询Q2销售数据”、“计算利润率”、“生成对比图表”。执行它依次调用“数据库查询工具”和“图表生成工具”。回复它把最终的对比图表和分析摘要一并交给你。这个过程中智能体展现了理解、规划、工具调用、执行的综合能力。而Phi-3这类模型正是实现“理解”和“规划”大脑的关键。2. 为什么选择Phi-3 Forest Laboratory市面上大模型很多为什么要选Phi-3来构建智能体呢主要是因为它有几个特别适合“干活”的优点身材小本事大Phi-3系列模型参数规模相对较小如3.8B但对指令的理解和遵循能力却很强。这意味着它可以在消费级显卡甚至CPU上快速运行部署成本低响应速度快非常适合作为高频调用的智能体“大脑”。“听话”且精准在工具调用Tool Calling和函数调用Function Calling任务上经过精调的Phi-3表现非常出色。它能严格按照你定义的格式输出比如准确生成一个结构化的JSON来调用工具减少错误。私有化部署友好所有计算都在本地或你的私有服务器上完成业务数据、查询逻辑完全不用出公司网络安全性有保障。高性价比对于企业内部的自动化流程使用GPT-4等大型API可能成本高昂。Phi-3提供了一个性能足够且成本可控的替代方案。Forest Laboratory通常指的是一套围绕Phi-3的实践环境或工具集帮助我们更方便地调试、组合和部署基于Phi-3的智能体应用。我们可以在这个“实验室”里精心设计智能体的能力。3. 动手搭建一个数据查询技能智能体理论说了不少我们来点实际的。假设我们要构建一个“数据查询技能智能体”它的核心技能是将用户的自然语言问题转化为可执行的SQL查询。3.1 设计智能体的“工具箱”智能体要干活得有工具。首先我们定义一个最核心的工具query_database。 这个工具接受一个参数sql_querySQL查询语句。在真实场景中这个函数会连接数据库并执行查询。# 工具函数的示例 import sqlite3 # 示例使用SQLite实际可能是MySQL、PostgreSQL等 import pandas as pd def query_database(sql_query: str): 根据输入的SQL查询语句查询数据库并返回结果。 参数: sql_query (str): 合法的SQL SELECT查询语句。 返回: str: 查询结果以表格字符串形式返回。如果出错返回错误信息。 # 连接到你的数据库这里用SQLite示例 conn sqlite3.connect(your_database.db) try: # 使用pandas直接读取SQL方便转换为字符串表格 df pd.read_sql_query(sql_query, conn) conn.close() # 将DataFrame转换为一个格式清晰的字符串表格 return df.to_string(indexFalse) except Exception as e: conn.close() return f查询执行出错: {str(e)}3.2 定义智能体的“大脑”与沟通规则接下来我们需要告诉Phi-3两件事它有哪些工具可以用上面定义的query_database。它应该如何思考以及以什么格式回复我们。这通过系统提示词来实现。系统提示词就像是智能体的岗位说明书和操作手册。system_prompt 你是一个专业的数据分析师助理擅长将用户关于数据的问题转化为精确的SQL查询。 # 你的能力 你拥有以下工具 - query_database: 执行SQL查询。输入应为标准的SQL SELECT语句。 # 你的工作流程 1. 仔细分析用户的问题理解其背后的数据需求。 2. 根据需求在脑海中构思出正确的SQL查询语句。确保表名、字段名正确WHERE条件准确。 3. **必须**使用提供的query_database工具来执行查询。 4. 将工具返回的数据结果用清晰、易懂的语言总结给用户。如果结果数据较多可以指出关键趋势或数据点。 # 输出格式 你必须严格按以下JSON格式回应只输出这个JSON对象不要有任何其他解释 { thought: 你的思考过程解释你将如何分析问题并构建SQL。, tool_call: { name: 工具名例如query_database, args: { sql_query: 你构建的完整SQL语句 } } } # 注意事项 - 只查询数据绝不执行INSERT、UPDATE、DELETE等写操作。 - 如果用户问题模糊请先在thought字段里请求澄清。 - SQL语句中请使用反引号()来包裹表名和字段名避免语法错误。 这个提示词定义了智能体的角色、工具、工作流程和严格的输出格式。强制输出JSON是为了让我们的程序能可靠地解析它的决策并调用相应的工具。3.3 组装智能体的“工作流水线”现在我们把大脑Phi-3、说明书系统提示词和工具组装起来形成一个可以自动运行的流水线。import json from phi3_inference import Phi3Client # 假设的Phi-3调用客户端实际需替换为你的加载方式 class DataQueryAgent: def __init__(self, model_client): self.client model_client self.system_prompt system_prompt # 上文定义的系统提示词 self.tools { query_database: query_database # 注册工具 } def run(self, user_query): # 1. 构建对话历史系统提示 用户问题 messages [ {role: system, content: self.system_prompt}, {role: user, content: user_query} ] # 2. 调用Phi-3模型获取智能体的决策JSON格式 response self.client.chat_completion(messages) agent_response response[choices][0][message][content] # 3. 解析智能体的决策 try: decision json.loads(agent_response) thought_process decision.get(thought, ) tool_call decision.get(tool_call, {}) print(f[智能体思考]: {thought_process}) # 4. 执行工具调用 tool_name tool_call.get(name) tool_args tool_call.get(args, {}) if tool_name in self.tools: tool_function self.tools[tool_name] result tool_function(**tool_args) # 执行工具例如 query_database(sql_querySELECT ...) return result else: return f错误智能体请求了未知工具 {tool_name} except json.JSONDecodeError: return f错误无法解析智能体的响应。原始响应{agent_response} # 初始化智能体 phi3_client Phi3Client() # 初始化你的Phi-3模型 agent DataQueryAgent(phi3_client) # 使用智能体 user_question 我们销量最高的前五个产品是什么 result agent.run(user_question) print(查询结果) print(result)3.4 看看它怎么工作假设你的数据库里有个sales表有product_name和quantity_sold字段。你的输入“我们销量最高的前五个产品是什么”智能体的思考在thought字段“用户想知道销量排名前五的产品。我需要查询sales表按quantity_sold降序排列然后取前五条记录。”智能体的行动它生成一个JSON其中tool_call.args.sql_query是SELECT product_name, quantity_sold FROM sales ORDER BY quantity_sold DESC LIMIT 5程序执行agent.run函数解析出这个SQL调用query_database工具连接到数据库执行并将结果返回。最终输出程序会打印出智能体的思考过程以及一个包含前五名产品名称和销量的表格字符串。4. 从“查询”到“工作流”扩展智能体的技能一个只会查数据的智能体已经很有用了但真正的威力在于组合多个技能处理复杂工作流。假设我们扩展一下让智能体不仅能查数据还能把结果做成图表并邮件发送给相关人员。定义新工具generate_chart(data, chart_type): 接收数据如上面的查询结果和图表类型如‘bar’, ‘line’生成图表图片。send_email(to, subject, body, attachment_path): 发送邮件。升级系统提示词在提示词中描述这三个工具并指导智能体“如果用户要求分析数据并发送报告你应该先调用query_database然后用结果调用generate_chart最后调用send_email。”升级智能体逻辑智能体的输出JSON可能需要包含一个计划plan里面按顺序排列多个工具调用。或者设计成链式调用执行第一个工具将结果连同原始问题再次喂给智能体让它决定下一步做什么。这更接近智能体的“规划”能力。# 一个简化的多步骤示例非完整代码 user_ask “分析一下过去半年各月的销售额趋势做成折线图然后发邮件给我老板。” # 第一轮智能体可能决定先查数据 # 执行 query_database(sql_querySELECT month, sales FROM ...) # 将查询结果作为新上下文再次询问智能体 new_context f“查询到的数据是{data_result}。用户原要求是{user_ask}” # 第二轮智能体看到数据决定生成图表 # 执行 generate_chart(datadata_result, chart_typeline) # 第三轮智能体拿到图表文件路径决定发送邮件 # 执行 send_email(tobosscompany.com, subject销售额趋势报告, ...)5. 构建可靠技能智能体的几个关键点在实际项目中要让智能体真正可靠地工作还需要注意以下几点清晰的技能边界在提示词里明确告诉智能体“你能做什么不能做什么”。比如严格禁止它生成任何删除数据的SQL。结构化输出是生命线强制要求JSON等结构化输出是程序与模型稳定交互的基础。Phi-3在这方面的服从性很好但仍需在提示词中反复强调格式。错误处理与安全工具函数内部必须有完善的错误捕获如SQL语法错误、数据库连接失败。对于查询类工具可以考虑在执行前加入一层简单的SQL语法或操作类型检查防止意外。给模型足够的上下文如果查询涉及复杂的业务表结构可以把关键的表名和字段名描述作为知识放在系统提示词里帮助模型生成更准确的SQL。持续迭代与评估收集智能体出错的案例分析是提示词不清晰、工具定义有问题还是模型能力不足。用这些案例不断优化你的系统。用Phi-3 Forest Laboratory构建技能智能体就像是在组装一个乐高机器人。模型是它的大脑提示词是它的程序工具函数是它的手脚。从一个简单的数据查询助手开始你可以不断为它添加新的工具连接CRM、操作日历、生成文档让它处理越来越复杂的业务流程。这个过程最有意思的部分在于你是在定义一种新的、与计算机交互的方式。你不再需要记住复杂的查询语法或软件操作路径你只需要用最自然的话告诉你的智能体你想要什么。它负责把“想法”拆解成“步骤”并驱动工具去完成。虽然目前它还无法处理极端复杂和模糊的任务但对于大量规则相对明确、流程固定的日常工作技能智能体已经是一个强大的生产力杠杆。不妨就从今天介绍的“数据查询智能体”开始试着让它帮你自动化第一个工作流吧。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。