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
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
#xxx
相关文章:
51c大模型~合集119
我自己的原文哦~ https://blog.51cto.com/whaosoft/13852062 #264页智能体综述 MetaGPT等20家顶尖机构、47位学者参与 近期,大模型智能体(Agent)的相关话题爆火 —— 不论是 Anthropic 抢先 MCP 范式的快速普及,还是 OpenAI…...
Day3:个人中心页面布局前端项目uniapp壁纸实战
接下来我们来弄一下个人中心页面布局user.vue <template><view class"userLayout"><view class"userInfo"><view class"avatar"><image src"../../static/Kx.jpg" mode"aspectFill"></im…...
多元协同网络拓扑模型
一、组织逻辑架构解构 1.1 多元协同网络拓扑模型 (1)产业链价值链重构图谱 阶段核心节点技术耦合系数商业转化周期基础层云服务供应商(阿里云/ECS集群)0.8512-24个月中台层开发者生态(百炼平台/API网关)…...
基于 Elasticsearch 8.12.0 集群创建索引
索引创建 创建一个产品的索引 解释: productId: 产品的唯一标识符,使用 keyword 类型,适合精确匹配和聚合操作。name: 产品名称,使用 text 类型进行全文搜索,同时包含一个 keyword 子字段用于精确匹配。description:…...
LeetCode283.移动零
给定一个数组 arr,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2 输入: nums [0] 输出: [0…...
select、poll、epoll实现多路复用IO并对比差异
目录 一、select实现多路复用 1.select函数介绍 2.select优缺点 3.select使用示例 二、poll实现多路复用 1.poll函数介绍 2.poll优缺点 3.poll使用示例 三、epoll实现多路复用 1.epoll函数介绍 2.epoll工作原理 3.epoll工作模式 (1)水平触发LT模式 (2)边缘触发ET模…...
FastAPI-MCP
介绍 开源地址: https://github.com/tadata-org/fastapi_mcp FastAPI-MCP 是一个开源项目,旨在简化 FastAPI 应用与现代 AI 代理(如基于大语言模型的系统)之间的集成。它通过自动将 FastAPI 的所有 API 端点暴露为符合 Model Co…...
Matlab 复合模糊PID
1、内容简介 Matlab 209-复合模糊PID 可以交流、咨询、答疑 2、内容说明 略摘 要:在并联型模糊 PID 复合控制器设计中,必须根据偏差大小及时地调整模糊控制部分和 PID 控制 部分的比例,而这种较为复杂的控制策略利用普通的 Simulink 模块是很难实现的.采用S-函数来解决 这个问…...
javaSE.队列
链表:屁股入队,头部出队 链尾入队👇 是while(tail.next!null) 👇 链首出队(head.next)👇 仅获取队首👇...
c++基础·左值右值
一、左值与右值的本质特征 1. 基础定义 左值 (lvalue) ✅ 可出现在赋值运算符左侧 ✅ 可被取地址(有明确存储位置) ✅ 通常为具名变量(如int a 10;中的a) 右值 (rvalue) ❌ 不可出现在赋值左侧 ❌ 不可取地址(无持久…...
From RAG to Memory: Non-Parametric Continual Learning for Large Language Models
从RAG到记忆:大语言模型的无参数持续学习 原文链接:https://arxiv.org/pdf/2502.14802 Code: https://github.com/OSU-NLP-Group/HippoRAG 🧠 HippoRAG 2 流程概述 1. 离线索引(Offline Indexing) 在此阶段,HippoRAG 2 构建一个开放式知识图谱(Open KG)以存储知识…...
STM32配置系统时钟
1、STM32配置系统时钟的步骤 1、系统时钟配置步骤 先配置系统时钟,后面的总线才能使用时钟频率 2、外设时钟使能和失能 STM32为了低功耗,一开始是关闭了所有的外设的时钟,所以外设想要工作,首先就要打开时钟,所以后面…...
Docker 安装配置教程(配置国内源)
## 一、Windows 安装 Docker Desktop 1. 系统要求: - Windows 10 64位:专业版、企业版或教育版 - 必须开启 Hyper-V 和容器功能 - 至少 4GB 内存 2. 安装步骤: - 访问 Docker 官网下载 Docker Desktop - 双击安装程序 - 按照向导完成安装 - 重启电脑 ## 二、macOS 安装 Dock…...
016-C语言内存函数
C语言内存函数 文章目录 C语言内存函数1. memcpy2. memmove3. memset4. memcmp 注意: 使用这些函数需要包含 string.h头文件。 1. memcpy void * memcpy ( void * destination, const void * source, size_t num );从source指向的位置开始,向后复制num…...
[FPGA]设计一个DDS信号发生器
一、DDS DDS(Data Distribution Service) 是一种面向实时分布式系统的通信中间件标准,专为高性能、高可靠性、低延迟的数据传输场景设计。它由对象管理组织(OMG) 制定并维护,广泛应用于物联网(…...
MySQL 线上大表 DDL 如何避免锁表(pt-online-schema-change)
文章目录 1、锁表问题2、pt-online-schema-change 原理3、pt-online-schema-change 实战3.1、准备数据3.2、安装工具3.3、模拟锁表3.4、解决锁表 1、锁表问题 在系统研发过程中,随着业务需求千变万化,避免不了调整线上MySQL DDL数据表的操作,…...
脚本中**通配符用法解析
在文件路径匹配中,** 是一种特殊的通配符(Glob Pattern),主要用于表示递归匹配任意层级的子目录。这种语法常见于以下场景: 1. 典型应用场景 .gitignore 文件: **/__pycache__ 表示匹配项目根目录下所有层…...
5 提示词工程指南-计划与行动
5 提示词工程指南-计划与行动 计划与行动 Cline 有两种模式: Plan 描述目标和需求、提问与回答、讨论、抽象项目的各个方面、确定技术路线、确定计划 计划与确认相当于架构师,不编写代码Act 按计划编写代码 按照计划编码Plan 模式的本质是构建实际编码前的上下文,Act 的本…...
62页华为IPD-MM流程:市场调研理论与实践方案精读【附全文阅读】
本文围绕市场调研展开,介绍其是联系市场和企业的纽带,具有收集陈述事实、解释信息、预测市场变化的作用,在 IPD 产品开发流程各阶段有不同应用。市场调研类型包括定性和定量研究,一般程序涵盖定义问题、拟定计划、抽样设计等多个环节。常用调研方法多样,各有特点和适用项目…...
(一)mac中Grafana监控Linux上的CPU等(Node_exporter 安装使用)
机器状态监控(监控服务器CPU,硬盘,网络等状态) Node_exporter安装在被测服务器上,启动服务 各步骤的IP地址要换为被测服务器的IP地址Prometheus.yml的 targets值网页访问的ip部分grafana添加数据源的URL 注意:只需要在被监听的服务器安装 n…...
STM32单片机入门学习——第44节: [13-1] PWR电源控制
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.20 STM32开发板学习——第44节: [13-1] PWR电源控制 前言开发板说明引用解答和科普一…...
Windows 10 上安装 Spring Boot CLI详细步骤
在 Windows 10 上安装 Spring Boot CLI 可以通过以下几种方式完成。以下是详细的步骤说明: 1. 手动安装(推荐) 步骤 1:下载 Spring Boot CLI 访问 Spring Boot CLI 官方发布页面。下载最新版本的 .zip 文件(例如 sp…...
WEMOS LOLIN32 开发板引脚布局和技术规格
🔗 快速链接ESP32 Development Boards, Sensors, Tools, Projects and More https://megma.ma/wp-content/uploads/2021/08/Wemos-ESP32-Lolin32-Board-BOOK-ENGLISH.pdf WEMOS LOLIN32 Development Board Details, Pinout, Specs WEMOS LOLIN32 Development Board …...
【AI 加持下的 Python 编程实战 2_07】第七章:基于 Copilot 完整演示问题分解能力在实际问题中的落地应用
【全新第二版《Learn AI-assisted Python Programming》封面】 写在前面 问题分解能力在 AI 辅助编程中具有举足轻重的作用。但是怎样分解才算合理有效呢?本章从一个具体的案例切入,完整展示了 GitHub Copilot 在自顶而下设计论的指导下圆满完成既定任务…...
React 路由入门秘籍:BrowserRouter 的江湖之道
前言 各位江湖中人,今日咱们聊一门流传在前端江湖的神秘绝学:<BrowserRouter>。此技出自 React 路由门派,专修客户端路由之道,擅长在 Web 世界中轻功跳转、闪转腾挪,悄无声息间掌控页面切换。 若你是构建现代 Web 应用的侠客,这篇秘籍堪比九阳真经,一经参悟,便…...
软件安装,systemctl命令,软连接
yum是centos里面的(apt是Ubuntu的) yum:RPM软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题 语法:yum 【-y】【install | remove | search | restart 】软件名称 -y:自动确…...
SpringBoot Actuator健康检查:自定义HealthIndicator
文章目录 引言一、Spring Boot Actuator健康检查概述二、自定义HealthIndicator的必要性三、实现自定义HealthIndicator四、高级健康检查配置五、实现自定义健康状态和响应码总结 引言 Spring Boot Actuator是Spring Boot框架中用于监控和管理应用程序的强大功能模块。它提供了…...
注意力机制(np计算示例)单头和多头
为了更好理解注意力机制里面的qkv矩阵,使用np来演示。 单头注意力 import numpy as np import math# 初始化输入 X X np.array([[[1, 2, 3], [4, 5, 6]]])# 初始化权重矩阵 WQ、WK、WV WQ np.array([[1, 0], [0, 1], [0, 0]])WK np.array([[1, 0], [0, 1], [0,…...
生成对抗网络(Generative adversarial network——GAN)
文章目录 1. 前言1.1 判别器和生成器的作用?2.2 个人总结 2. 核心代码示例2.1 训练判别器网络2.2 训练生成器网络 参考文章 1. 前言 生成对抗网络的原文:Generative Adversarial Nets,该论文的精读视频:生成对抗网络GAN开山之作论…...
CSGHub开源版本v1.6.0更新
CSGHub v1.6.0 带来了多项核心功能升级与性能优化,显著增强了对大模型推理、微调、评估等流程的支持,并进一步完善了推理服务与用户交互体验。 插件化推理与训练引擎框架 推理、微调和评估引擎现已全面模块化,支持通过配置文件灵活接入多种引…...
Redis日常学习(一)
我的Redis学习笔记:从命令行到性能调优 Redis Redis(Remote Dictionary Server)本质上是一个基于内存的键值存储系统. 安装配置Redis的过程非常简单: # Ubuntu/Debian安装Redis sudo apt-get update sudo apt-get install red…...
Unity3D仿星露谷物语开发37之浇水动画
1、目标 当点击水壶时,实现浇水的动画。同时有一个水从水壶中流出来的特效。 假如某个grid被浇过了,则不能再浇水了。。 如果某个grid没有被dug过,也不能被浇水。 2、优化Settings.cs脚本 增加如下内容: public static float…...
JavaScript 一维数组转不含零的两个数
问题描述: /*** param {number} n* return {number[]}*/ var getNoZeroIntegers function(n) {for(let i 1;i<n;i){if(String(i).indexOf(0) -1&&String(n-i).indexOf(0) -1){return [i,n-i]}}};String类型indexOf()函数如果找不到字串则返回-1&…...
抽象工厂模式及其在自动驾驶中的应用举例(c++代码实现)
模式定义 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,用于封装一组具有共同主题的独立对象创建过程。该模式通过提供统一接口创建相关对象家族,而无需指定具体实现类,特别适合需要保证系统组件兼容…...
知乎十四载:从精英问答到AI时代的知识灯塔
一、起源:Quora 的火种与周源的执念 2010 年,互联网浪潮正汹涌澎湃,各种新兴平台如雨后春笋般不断涌现。就在这一年的一个夜晚,周源像往常一样在网上浏览着各类信息,当他打开美国问答网站 Quora 时,瞬间被…...
Linux文件时间戳详解:Access、Modify、Change时间的区别与作用
在 Linux 系统中,文件的这三个时间戳(Access、Modify、Change)分别表示不同的文件状态变更时间,具体含义如下: 1. Access Time (Access) 含义:文件最后一次被访问的时间(读取内容或执行…...
Doris + Iceberg 构建冷热分层数据湖架构:架构设计与实战指南
在海量数据治理与存储演进中,冷热数据分层 已成为降本增效的关键策略。本篇将深入探讨如何结合 Apache Doris 与 Apache Iceberg 构建一套高性能、可扩展的数据湖架构,支持冷热数据自动分层、快速查询与灵活扩展。 一、背景:为什么需要冷热数…...
顺序表和链表的区别(C语言)
前言 线性表是最基础的数据结构之一,其中顺序表与链表分别代表两种存储方式: 顺序表(Sequential List):底层用数组实现,要求内存连续,典型代码以 int data[N] 或动态分配的 malloc/realloc 数…...
【Redis】Redis中的常见数据类型(一)
文章目录 前言一、Redis前置知识1. 全局命令2、数据结构和内部编码3. 单线程架构 二、String 字符串1. 常见命令2. 计数命令3.其他命令4. 内部编码5. 典型使用场景 三、Hash哈希1. 命令2.内部编码3. 使用场景4. 缓存方式对比 结语 前言 Redis 提供了 5 种数据结构,…...
Vue3 + TypeScript,使用祖先传后代模式重构父传子模式
父传子模式 父组件 SampleInput.vue <script setup lang"ts" name"SampleInput"> import { ref } from "vue"; import type { ApplyBasicInfo, Apply, ApplySample } from "/interface"; import CommonApplySampleTable from …...
MySQL:9.表的内连和外连
9.表的内连和外连 表的连接分为内连和外连 9.1 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,之前查询都是内连 接,也是在开发过程中使用的最多的连接查询。 语法: select 字段 from 表1 inner join 表2 on 连接…...
(mac)Grafana监控系统之监控Linux的Redis
Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装(mac)-CSDN博客 1.Redis_exporter安装 直接下载 wget https://github.com/oliver006/redis_exporter/releases/download/v1.0.3/redis_exporter-v1.0.3.linux-amd64.tar.gz 解压 tar -xvf redis_…...
Multisim使用教程详尽版--(2025最新版)
一、Multisim14前言 1.1、主流电路仿真软件 1. Multisim:NI开发的SPICE标准仿真工具,支持模拟/数字电路混合仿真,内置丰富的元件库和虚拟仪器(示波器、频谱仪等),适合教学和竞赛设计。官网:艾…...
python pdf转图片再OCR
先pdf转图片 import os from pdf2image import convert_from_path# PDF文件路径 pdf_path /Users/xxx/2022.pdf # 输出图片的文件夹 output_folder ./output_images2022 # 输出图片的命名格式 output_name page# 如果输出文件夹不存在,创建它 if not os.path.ex…...
npm link 使用指南
npm link 使用指南 npm link 是一个非常有用的命令,主要用于在开发过程中将本地 npm 包链接到全局 npm 目录,从而可以在其他项目中使用这个本地包,而不需要发布到 npm 仓库。 基本用法 1. 创建全局链接 进入你要链接的本地包的根目录&…...
免费图片软件,可矫正倾斜、调整去底效果
软件介绍 有个超棒的软件要给大家介绍一下哦,它就是——ImgTool,能实现图片漂白去底的功能,而且重点是,它是完全免费使用的呢,功能超强大! 软件特点及使用便捷性 这软件是绿色版本的哟,就像一…...
5G网络切片:精准分配资源,提升网络效率的关键技术
5G网络切片:精准分配资源,提升网络效率的关键技术 随着5G技术的广泛应用,网络切片(Network Slicing)作为其核心创新之一,正在改变传统网络架构。它通过将物理网络划分为多个逻辑网络(切片&…...
seate TCC模式案例
场景描述 用户下单时,需要创建订单并从用户账户中扣除相应的余额。如果订单创建成功但余额划扣失败,则需要回滚订单创建操作。使用 Seata 的 TCC 模式来保证分布式事务的一致性。 1. 项目结构 假设我们有两个微服务: Order Service&#x…...
Transfomer的本质
Transformer是一个基于自注意力机制的深度学习模型,用于处理序列数据,主要结构包括编码器和解码器,每个部分由多头自注意力和前馈网络组成,加上残差连接和层归一化,以及位置编码。它解决了RNN的并行处理问题࿰…...
final修饰变量的注意
在Java中,使用final修饰变量时,需注意以下关键事项: 1. 初始化规则 实例变量: 必须在声明时、构造器或实例初始化块中初始化。所有构造器分支必须保证初始化。 class Example {final int x; // 实例变量final int y;public Exampl…...