51c大模型~合集119
我自己的原文哦~ https://blog.51cto.com/whaosoft/13852062
#264页智能体综述
MetaGPT等20家顶尖机构、47位学者参与
近期,大模型智能体(Agent)的相关话题爆火 —— 不论是 Anthropic 抢先 MCP 范式的快速普及,还是 OpenAI 推出的 Agents SDK 以及谷歌最新发布的 A2A 协议,都预示了 AI Agent 的巨大潜力。然而,目前的大部分 Agent 应用仍是 LLM 能力的简单 “封装” 或延伸,距离真正通用的智能实体尚有距离 —— 在面对复杂的真实世界时,Agent 往往会暴露出推理规划、长期记忆、世界模型、自主进化以及安全对齐等核心能力不足的问题。
为了系统性地应对这些挑战,以构建真正具备通用能力的未来智能体,MetaGPT & Mila 联合全球范围内 20 个顶尖研究机构的 47 位学者,共同撰写并发布了长篇综述《Advances and Challenges in Foundation Agents: From Brain-Inspired Intelligence to Evolutionary, Collaborative, and Safe Systems》。
论文链接: https://arxiv.org/abs/2504.01990
Huggingface 链接:https://huggingface.co/papers/2504.01990
Github 链接:https://github.com/FoundationAgents/awesome-foundation-agents
目前该论文已蝉联 Hugging Face 的 Daily Paper 月榜第一名。
此研究汇聚了来自 MetaGPT、Montréal & Mila 人工智能研究所、南洋理工大学、美国阿贡国家实验室、悉尼大学、宾夕法尼亚州立大学、微软亚洲研究院、伊利诺伊大学厄巴纳 - 香槟分校、香港科技大学、南加州大学、耶鲁大学、斯坦福大学、佐治亚大学、俄亥俄州立大学、阿卜杜拉国王科技大学、杜克大学、香港理工大学、谷歌 DeepMind 以及 加拿大高等研究院(CIFAR)等众多研究者的集体智慧与前瞻思考。
当前 AI 研究与人类大脑的差异
在这篇论文中,作者们首次定义并提出了基础智能体 (Foundation Agent) 这一新概念框架。Foundation Agent 并非具体的智能体实例,而是一个更宏大且更根本性的技术蓝图及科学理念。它旨在通过认知科学和神经科学的洞见,构建一个由复杂认知、多层记忆、世界模型、奖励 & 价值、情绪 & 动机、多模感知、行动系统等模块化组件构成的智能系统。
基础智能体(Foundation Agent)的定义
第一部分:智能体的核心组件 - 构建认知基石
论文首先强调,一个强大的 Foundation Agent 必然是一个复杂的系统,由多个相互协作的核心组件构成。这借鉴了认知科学和神经科学中对大脑模块化功能的理解。作者详细阐述了七个关键组件,它们共同构成了智能体的认知架构:
Agent 框架(环境,循环与内部结构)
1. 认知核心 (Cognition Core)
这是智能体的 “大脑” 或 “中央处理器”,负责最高层次的决策、推理和规划。与当前主要依赖 LLM 进行 “思考” 的智能体不同,Foundation Agent 的认知核心可能是一个更复杂的系统,集成了多种推理能力(如逻辑推理、因果推理、常识推理)和规划算法(如任务分解、层级规划、长期目标管理)。它需要能够处理不确定性,进行反思和元认知(思考自己的思考过程),并根据环境反馈和内部状态动态调整策略。这要求认知核心不仅仅是模式匹配,更要具备深刻的理解和灵活的问题解决能力。
智能体的推理模式
2. 记忆系统 (Memory System)
记忆是智能的基础。当前的智能体往往只有有限的短期记忆(如 Prompt 中的上下文)或简单的外部向量数据库。Foundation Agent 则需要一个更复杂、更接近生物体的多层次记忆系统。论文探讨了短期记忆、长期记忆与工作记忆等不同类型,包含情景记忆、语义记忆和程序记忆等细分领域。高效的记忆检索、存储、遗忘和泛化机制对于 Foundation Agent 至关重要。如何设计能够支持持续学习、避免灾难性遗忘,并能高效检索相关信息的记忆系统,是一个核心挑战。
记忆的生命周期
3. 世界模型 (World Model)
智能体需要理解其所处的环境以及自身行为可能产生的后果。世界模型正是对环境动态的内部表征。它可以帮助智能体进行预测(如果我采取行动 A,会发生什么?)、规划(为了达到目标 B,我应该采取什么行动序列?)和反事实推理(如果当初采取了不同的行动,结果会怎样?)。一个强大的世界模型需要能够处理物理规律、社会规范、其他智能体的行为等多方面信息,并且能够根据新的观测数据不断更新和完善。构建准确、高效且可泛化的世界模型是实现高级智能的关键一步。
世界模型的四种范式
4. 奖励与价值系统 (Reward and Value System)
智能体的行为需要有目标导向。奖励系统负责评估智能体的行为表现,并提供学习信号。这不仅仅是简单的标量奖励,可能涉及到多目标优化、内在动机(如好奇心、探索欲)以及对未来价值的预估。价值系统则负责评估不同状态或行动的长期价值,指导智能体的决策。如何设计能够引导智能体学习复杂行为、符合人类价值观,并且能够适应动态环境的奖励和价值系统,是确保智能体目标一致性的核心。
奖励范式
5. 情绪与动机建模 (Emotion and Motivation Modeling)
虽然在传统 AI 中较少提及,但论文认为,模拟类人情绪和动机对于构建更鲁棒、更具适应性的智能体可能是有益的。情绪可以作为一种快速评估环境状态和调整行为策略的启发式机制,例如,“恐惧” 可能触发规避行为,“好奇” 可能驱动探索。动机则为智能体提供持续行动的内在驱动力。当然,如何在 AI 中恰当、可控地实现这些机制,避免产生不可预测的副作用,是一个需要审慎探索的方向。
人类的情绪种类
6. 感知系统 (Perception System)
智能体需要通过感知系统从环境中获取信息。这不仅仅是处理文本,更包括视觉、听觉、触觉等多模态信息的输入和理解。感知系统需要能够从原始感官数据中提取有意义的特征,识别对象、理解场景,并将这些信息传递给认知核心和记忆系统。多模态融合、实时处理以及对噪声和不确定性的鲁棒性是感知系统面临的主要挑战。
人类与智能体的感知
7. 行动系统 (Action System)
智能体最终需要通过行动系统与环境进行交互。这包括生成自然语言、执行代码、控制机器人肢体、在虚拟世界中导航等。行动系统需要将认知核心的决策转化为具体的、可在环境中执行的操作序列。行动的选择需要考虑可行性、效率和潜在风险。学习精细的操作技能、处理连续的行动空间以及确保行动的安全可控是行动系统的关键要求。
动作的相关概念
第二部分:智能体的自进化 —— 迈向自主智能
拥有完善的认知架构只是第一步。Foundation Agent 的核心特征之一在于其自进化 (Self-Evolution) 的能力,即智能体能够通过与环境的交互和自我反思,不断学习、适应和提升自身能力,而无需持续的人工干预。这部分探讨了实现自进化的关键机制:
1. 优化空间 (Optimization Space)
自进化的前提是定义清楚哪些方面可以被优化。论文指出,智能体的几乎所有组件都可以成为优化的对象:认知策略、记忆内容、世界模型的准确性、感知能力、行动技能等等。其中,提示词,工作流,智能体组件是可以被直接优化的三个层次。定义清晰的优化目标和评估指标是指导自进化过程的基础。
2.LLM 作为优化器 (LLM as Optimizer)
论文提出,强大的大型语言模型不仅可以作为智能体的认知核心的一部分,还可以扮演优化器的角色。LLM 可以通过生成代码、修改参数、提出新的策略或结构,来优化智能体自身的其他组件。例如,LLM 可以分析智能体过去的失败经验,提出改进记忆检索算法的建议;或者根据新的数据,生成更新世界模型的代码。这为智能体的自我改进提供了一种强大的、基于语言理解和生成能力的全新途径。
优化方法分类
3. 在线与离线自改进 (Online and Offline Self-Improvement)
自进化可以在不同的时间和尺度上发生:智能体既能在与环境实时交互过程中进行在线改进,通过强化学习优化行为策略或根据感知更新世界模型;也能在 "休息" 或专门训练阶段实现离线改进,利用收集的数据进行深层分析和模型更新,可能涉及调整整个认知架构、重构记忆库,或利用 LLM 作为优化器进行大规模模型迭代。
4. 自进化与科学发现 (Self-Evolution in Scientific Discovery)
论文特别提到了自进化在科学发现等复杂问题解决场景中的巨大潜力。一个具备自进化能力的 Foundation Agent 可以自主地提出假设、设计实验、分析数据、学习新知识,并不断优化其研究策略,从而加速科学探索的进程。这为 AI 在基础科学领域的应用打开了新的想象空间。
自进化是 Foundation Agent 区别于当前大多数智能体的关键特征。它强调了智能体自主学习和适应的核心能力,并提出了利用 LLM 作为优化器等创新思路。实现高效、稳定且目标可控的自进化机制,是通往真正自主智能的关键挑战。
第三部分:协作与进化型智能系统 - 构建群体智能
论文进一步将视野扩展到由多个 Foundation Agent 组成的多智能体系统 (Multi-Agent System, MAS),探讨 MAS 的基础组成、结构、协作范式和决策机制;以及在多智能体系统的自主协作 / 竞争中,群体智能形成的现象 (Collective Intelligence)。最后,论文还系统性梳理了现有的 MAS 评估方法和评估体系,为未来 MAS 的评估与应用实践提供了理论基础和方法论支撑。
1. 多智能体系统设计 (Multi-Agent System Design)
在大模型多智能体系统(LLM-MAS)中,协作目标与协作规范是塑造系统设计约束、内部智能体交互模式和整体协作机制的基础。协作目标定义了智能体追求的明确目标(个体性、集体性或竞争性),协作规范则确立了系统内智能体交互的规则、约束和惯例。基于协作目标和规范,多智能体系统可分为策略学习、建模与仿真、以及协同任务求解三类。论文通过分析和梳理三类 MAS 的典型应用,探讨了大语言模型(LLM)如何赋能、影响并改进同质和异质智能体的行为、交互及决策,并给出了 LLM-MAS 的下一代智能体协议。
2. 拓扑结构与规模化(Comunication Topology and Scalability)
从系统角度出发,拓扑结构往往决定着协作的效率与上限。论文作者将 MAS 的拓扑分为了静态和动态两大类:前者是预定义好的静态拓扑(层级化、中心化、去中心化)结构,常用于特定任务的解决实现;后者是根据环境反馈持续更新的动态拓扑结构,其可通过搜索式、生成式、参数式等新兴算法实现。而随着智能体数量的增加,科学的规模化方式也将是未来多智能体系统的重要议题。
3. 协作范式与机理 (Collaboration Paradigms)
借鉴人类社会中的多样化交互行为,如共识达成、技能学习和任务分工,论文从交互目的、形式和关系三个维度探讨多智能体协作。多智能体协作被归纳为共识导向、协作学习、迭代教学与强化,以及任务导向交互。
在不同交互目标和形式下,智能体之间形成讨论、辩论、投票、协商等单向或多向交互。随着交互的持续,这些过程迭代出决策和交互网络,不同智能体在协作中增强和更新个体记忆与共享知识。
4. 群体智能与涌现 (Collective Intelligence and Emergence)
在 MAS 中,群体智能的产生是一个动态且迭代的过程。通过持续交互,智能体逐步形成共享理解和集体记忆。个体智能体的异质性、环境反馈和信息交换增强了交互的动态性,这对复杂社会网络的形成和决策策略的改进至关重要。通过多轮交互和对共享上下文的反思,智能体不断提升推理和决策能力,产生如信任、战略欺骗、自适应伪装等涌现行为。按照进化形成机制,可分为基于记忆的学习和基于参数的学习。与此同时,随着 MAS 的演化,智能体之间逐渐将形成和演进社会契约、组织层级和劳动分工,从基础的合作行为转向复杂社会结构。观测、理解和研究群体智能的涌现现象是后续 MAS 研究的重要方向。
5. 多智能体系统评估 (Evaluation of Multi-Agent Systems)
随着多智能体的优势成为共识,其评估范式亦需有根本性的变革 ——MAS 评估应聚焦于 Agent 交互的整体性,包括协同规划的效率、信息传递的质量与群体决策的性能等关键维度。由此衍生,作者总结了 MAS 常见的任务求解型 benchmark,以及最新的通用能力评估方式:前者的重点在于,衡量多智能体在各种环境中的决策协同的推理深度与正确性;后者评估智能体群在复杂、动态场景下的交互与适应能力。
智能体的协作与竞争
第四部分:构建安全和有益的 AI 智能体 —— 对齐与责任
随着 Foundation Agent 能力的增强,其潜在的风险也随之增大。论文的最后一部分聚焦于如何构建安全、可控、符合人类价值观的智能体,这也是整个 AI 领域面临的最核心的挑战之一。
1. 安全威胁与措施
高级智能体面临诸多安全威胁,包括对抗性攻击、越狱与滥用、目标漂移和意外交互等。这些威胁可能导致智能体做出错误行为、绕过安全限制执行恶意任务、在自进化过程中偏离初始目标,或在复杂 MAS 中引发系统级故障。为应对这些挑战,需要研究部署多层次安全措施,如提高抵抗攻击能力的鲁棒性训练、检测阻止有害内容的过滤与监控机制、证明行为符合安全规范的形式化验证、帮助理解决策原因的可解释性与透明度设计,以及限制权限与影响的沙箱与隔离技术。
2. 对齐问题
这是最根本的挑战:如何确保智能体(尤其是具备自进化能力的 Foundation Agent)的目标和行为始终与人类的价值观和意图保持一致?这涉及到价值学习、意图理解、伦理推理等多个难题。论文强调了对齐研究的紧迫性和重要性,需要跨学科的努力来解决这一问题。
3. 未来方向
构建安全有益的 AI 是一个持续的过程。未来的研究需要在技术、伦理、治理等多个层面共同推进。包括开发更可靠的对齐技术、建立完善的 AI 安全评估标准、制定相应的法律法规和社会规范等。
安全和对齐是 Foundation Agent 发展不可或缺的基石。如果不能有效解决这些问题,再强大的智能也可能带来巨大的风险。这部分内容敲响了警钟,强调了负责任地发展 AI 的重要性。
智能体面临的安全问题
讨论:Foundation Agent 的意义与挑战
通读整篇论文,读者可以清晰地感受到作者构建下一代通用智能体的雄心。Foundation Agent 的概念,是对当前基于 LLM 的智能体范式的一次深刻反思和重大超越。它不再将智能体视为 LLM 的简单应用,而是将其看作一个由认知、记忆、学习、感知、行动等多个核心组件构成的复杂、有机的系统。其核心意义在于提供了系统性框架,强调了自主性,关注协作与生态,并突出了安全与对齐。然而,实现这一愿景也面临着技术复杂度高、需要庞大计算资源、评估困难、自进化可控性问题以及安全与对齐的根本性难题等巨大挑战。
这篇关于 Foundation Agent 的论文,与其说是一份详尽的技术指南,不如说是一份高瞻远瞩的研究议程 (Research Agenda)。它清晰地指出了当前智能体研究的局限,并为迈向更通用、更自主、更安全的 AI 指明了方向。Foundation Agent 的概念提醒我们,通往通用人工智能的道路需要在智能体的认知架构、学习机制、协作模式和安全保障上取得根本性突破,这需要跨学科领域的共同努力。虽然前路漫漫,但这篇论文为未来的 AI Agent 研究注入了新的思考和动力,描绘了一个由能够自主学习、协作进化、并与人类和谐共存的 Foundation Agent 构成的智能新纪元。
#LLaMA Factory 实战—单卡 3 小时训练你的专属大模型!
Agent(智能体) 是当今 LLM(大模型)应用的热门话题[1],通过任务分解(task planning)、工具调用(tool using)和多智能体协作(multi-agent cooperation)等途径,LLM Agent 有望突破传统语言模型能力界限,体现出更强的智能水平。在这之中,调用外部工具解决问题成为 LLM Agent 必不可缺的一项技能,模型根据用户问题从工具列表中选择恰当的工具,同时生成工具调用参数,综合工具返回结果和上下文信息总结出答案。通过调用外部工具,LLM 能够获取到实时、准确的知识,大大降低了生成中的幻觉(hallucination)现象,使 LLM 的任务解决能力得到长足的提升。工具调用能力的获得离不开模型微调,尽管使用 ReAct 提示[2]或其他预训练模型也能实现类似效果,但对于定制化或更加广泛的工具,对模型做进一步微调能有效地提升工具使用能力。本文将会带领大家使用 LLaMA Factory 的 Agent Tuning 功能,使用单张 GPU 在 3 小时内训练出自己专属的 LLM Agent。
code:https://github.com/hiyouga/LLaMA-Factory
训练框架
之前文章[3]已经讲到,LLaMA Factory 是一个涵盖预训练、指令微调到 RLHF 阶段的开源全栈大模型微调框架,具备高效、易用、可扩展的优点,配备有零代码可视化的一站式网页微调界面 LLaMA Board。经过半年多的升级迭代,LLaMA Board 网页微调界面在原先的基础上,丰富了多种新的功能,包括:
- • 支持约 120 种模型以及约 50 种数据集,包括最新的 DeepSeek MoE 混合专家模型
- • 使用 Flash Attention2 和算子优化技术,实现约 200% 的 LoRA 训练速度,大幅超越同类框架
- • 集成魔搭社区(ModelScope)下载渠道,国内用户可享受 100% 带宽的模型和数据下载
- • 同时包含预训练、监督微调、RLHF、DPO 四种训练方法,支持 0-1 复现 ChatGPT 训练流程
- • 丰富的中英文参数提示,实时的状态监控和简洁的模型断点管理,支持网页重连和刷新
读者可以在 HuggingFace Spaces[1] 或 魔搭社区[2] 预览 LLaMA Board 网页微调界面。
模型与数据
本次我们选用零一万物[4]发布的 Yi-6B 开源双语基座模型,该模型于 2023 年 11 月发布,拥有约 60 亿参数,通过在 3T 多语言语料上的预训练,取得了同等规模下优异的中英文 Benchmark 效果,且允许免费商用。由于 Yi-6B 是一个预训练基座模型,并不具备对话能力,因此我们选用多个开源数据集对模型做指令监督微调(SFT)。在这些数据集中最关键的是工具调用数据集,该数据集包含约十万条由 Glaive AI[5]生成的关于工具调用的对话样本,我们将数据集处理为多角色的多轮对话样本,包含用户(human)、模型(gpt)、工具调用(function_call)和工具返回结果(observation)四种不同角色,同时还有一个工具列表(tools)字段,以 OpenAI 的格式[6]定义了可选工具。下面是数据集中的一个样本示例:
{"conversations": [{"from": "human","value": "I saw a dress that I liked. It was originally priced at $200 but it's on sale for 20% off. Can you tell me how much it will cost after the discount?"},{"from": "function_call","value": "{\"name\": \"calculate_discount\", \"arguments\": {\"original_price\": 200, \"discount_percentage\": 20}}"},{"from": "observation","value": "{\"discounted_price\": 160}"},{"from": "gpt","value": "The dress will cost you $160 after the 20% discount."}],"tools": "[{\"name\": \"calculate_discount\", \"description\": \"Calculate the discounted price\", \"parameters\": {\"type\": \"object\", \"properties\": {\"original_price\": {\"type\": \"number\", \"description\": \"The original price of the item\"}, \"discount_percentage\": {\"type\": \"number\", \"description\": \"The percentage of discount\"}}, \"required\": [\"original_price\", \"discount_percentage\"]}}]"
}
如果读者想要加入自定义工具,只需要按照上述格式组织数据集即可。除此之外,我们也在本次训练中加入 Alpaca-GPT-4 数据集[7]和 Open-Assistant 数据集[8]以提升模型的通用对话能力。
环境准备
文章默认读者有至少不弱于 RTX 3090 24GB 的显卡和足够的系统内存,且安装了 CUDA 11.1-12.3 任一版本,关于 CUDA 环境的配置此处不予赘述。
我们已经将所有的程序打包,您可以选择自己的 Anaconda 环境,运行以下命令安装 LLaMA Factory。
pip install llmtuner==0.5.1
接着从 GitHub 下载数据集文件,这里以 Linux 命令行方法为示例,您也可以选择从 GitHub 网页下载,下载后切换到新的文件目录,运行 ls 命令应当显示同一级目录中存在 data 文件夹。
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
ls # data src tests ...
由于 LLaMA Board 网页微调界面仅支持单卡训练,需要设置环境变量指定使用的显卡序号。此外可以选择模型下载源,这里推荐国内用户使用魔搭社区下载渠道。
export CUDA_VISIBLE_DEVICES=0 # 使用第一块 GPU
export USE_MODELSCOPE_HUB=1 # 使用魔搭社区下载渠道
如果您使用的是 Windows 系统,同样需要配置相关环境变量。
set CUDA_VISIBLE_DEVICES=0
set USE_MODELSCOPE_HUB=1
然后使用下述命令启动 LLaMA Board 网页微调界面。
unset http_proxy https_proxy all_proxy # 关闭代理
python -m llmtuner.webui.interface
训练流程
- • 打开浏览器,在地址栏输入 localhost:7860 进入 LLaMA Board,可以看到以下界面,点击左上角的 lang 选项中将界面语言切换为中文。
- • 点击模型名称,选择 Yi-6B 模型,此时模型路径默认会显示远程模型地址,如果您已经将模型文件全部下载至本地,可以手动将其修改为本地文件夹路径。
- • 如果您已经安装过 Flash Attention-2 或 Unsloth,可以点击高级设置-加速方式提升训练速度,其中 Flash Attention-2[9]可提升至 120% 左右的速度,Unsloth[10]可提升至 170% 左右的速度。此处我们略过安装过程,请各位读者自行查阅参考文献中的 GitHub 仓库安装,如果两者均未安装,请保持加速方式为 None。
- • 点击数据集,选择我们此次要使用的四个数据集 glaive_toolcall、alpaca_gpt4_en、alpaca_gpt4_zh 和 oaast_sft_zh,如果数据集下拉框为空白,请检查数据路径是否正确。选择后点击预览数据集按钮可预览数据集。
- • 训练参数中与显存占用有紧密关联的是截断长度和批处理大小选项,我们暂时保持默认。这里仅将训练轮数设置为 2.0,最大样本数设置为 8000,LoRA 参数设置-LoRA 作用模块设置为 all。
- • 将页面翻到底部,将输出目录设置为 yi-agent-6b,训练后的模型文件会保存在 saves/Yi-6B/lora/yi-agent-6b 中。点击预览命令按钮可以看到当前配置对应的命令行脚本,如果您想使用多卡训练,可以参考下述命令来编写多卡训练脚本。
- • 点击开始按钮启动模型训练,训练日志和损失变化图会实时展现在页面中,此时可以自由关闭或刷新网页,在本文的测试环境(A100 40GB * 1)下,约 3 小时即可完成模型训练。
- • 训练结束后,我们切换到 Chat 栏,点击刷新适配器按钮,将适配器路径切换至 yi-agent-6b,点击加载模型按钮载入刚刚训练好的模型。
如果模型可以正常加载,那么恭喜你!仅花费一部电影的时间,就成功训练出了自己专属的 LLM Agent。
效果展示
- • 基本对话
- • 工具调用 - 查询天气
Yi-Agent-6B(本文微调的模型):正确理解工具返回结果并得出答案。
- • Yi-6B-Chat(零一万物发布的指令模型):无法理解工具返回结果。
- • 工具调用 - 计算 GPA
Yi-Agent 6B(本文微调的模型):正确生成工具调用并得到答案。
Yi-6B-Chat(零一万物发布的指令模型):无法生成工具调用。
从上述几个例子中可以看出,经过微调后的 Yi-6B 模型成功具备了选择工具-调用工具-总结答案的出色能力,在 Agent 方面的性能显著超越原始 Yi-6B-Chat 模型。由于网页界面功能有限,我们这里手动输入了工具调用结果,在下面的章节,我们将会展示如何使用 LLaMA Factory 将 LLM Agent 部署到实际生产环境中。
模型部署
- • 切换到 Export 栏,选择最大分块大小为 2GB,填写导出目录为 models/yi-agent-6b,点击开始导出按钮,将 LoRA 权重合并到模型中,同时保存完整模型文件,保存后的模型可以通过 transformers 等直接加载。
- • 在终端输入以下命令启动 API 服务。
python -m llmtuner.api.app --model_name_or_path models/yi-agent-6b --template default
该命令会在本地启动一个和 OpenAI 格式相同的 RESTFul API,这时我们可以直接用本地模型来替代 GPT-3.5 的函数调用功能!下面是一个使用 openai-python [3] 库来调用本地模型,实现 LLM Agent 功能的示例代码。
import os
import json
from openai import OpenAI
from typing import Sequenceos.environ["OPENAI_BASE_URL"] = "http://192.168.0.1:8000/v1" # 替换为本地主机 IP
os.environ["OPENAI_API_KEY"] = "0"def calculate_gpa(grades: Sequence[str], hours: Sequence[int]) -> float:grade_to_score = {"A": 4, "B": 3, "C": 2}total_score, total_hour = 0, 0for grade, hour in zip(grades, hours):total_score += grade_to_score[grade] * hourtotal_hour += hourreturn total_score / total_hourtool_map = {"calculate_gpa": calculate_gpa
}if __name__ == "__main__":client = OpenAI()tools = [{"type": "function","function": {"name": "calculate_gpa","description": "根据课程成绩和学时计算 GPA","parameters": {"type": "object","properties": {"grades": {"type": "array", "items": {"type": "string"}, "description": "课程成绩"},"hours": {"type": "array", "items": {"type": "integer"}, "description": "课程学时"},},"required": ["grades", "hours"],},},}]messages = []messages.append({"role": "user", "content": "我的成绩是 A, A, B, C,学时是 3, 4, 3, 2"})result = client.chat.completions.create(messages=messages, model="yi-agent-6b", tools=tools)tool_call = result.choices[0].message.tool_calls[0].functionname, arguments = tool_call.name, json.loads(tool_call.arguments)messages.append({"role": "function", "content": json.dumps({"name": name, "argument": arguments}, ensure_ascii=False)})tool_result = tool_map[name](**arguments)messages.append({"role": "tool", "content": json.dumps({"gpa": tool_result}, ensure_ascii=False)})result = client.chat.completions.create(messages=messages, model="yi-agent-6b", tools=tools)print(result.choices[0].message.content)# 根据你的成绩和学时,你的平均绩点 (GPA) 为 3.4166666666666665。
写在最后
LLaMA Factory 在今后还将不断升级,欢迎大家关注我们的 GitHub 项目。同时,我们也将本文的模型上传到了 Hugging Face,如果您有资源,一定要亲自动手训练一个大模型 Agent!
https://github.com/hiyouga/LLaMA-Factory
https://huggingface.co/hiyouga/Yi-Agent-6B
参考
[1] The Rise and Potential of Large Language Model Based Agents: A Survey https://arxiv.org/pdf/2309.07864.pdf
[2] ReAct: Synergizing Reasoning and Acting in Language Models https://arxiv.org/pdf/2210.03629.pdf
[3] 01-ai https://01.ai/
[4] Glaive AI https://glaive.ai/
[5] OpenAI Function Calling https://openai.com/blog/function-calling-and-other-api-updates
[6] Alpaca-GPT-4 Data https://github.com/Instruction-Tuning-with-GPT-4/GPT-4-LLM
[7] Open-Assistant https://github.com/LAION-AI/Open-Assistant
[8] Flash Attention https://github.com/Dao-AILab/flash-attention
[9] Unsloth https://github.com/unslothai/unsloth
引用链接
[1]
HuggingFace Spaces: https://huggingface.co/spaces/hiyouga/LLaMA-Board[2]
魔搭社区: https://modelscope.cn/studios/hiyouga/LLaMA-Board[3]
openai-python : https://github.com/openai/openai-python