标签: AGI

  • GraphRAG:智能摘要技术的新突破

    在数字化时代,我们每天都在创造海量文本数据。如何从这些数据中提取有价值的信息并进行有效总结,成为了一个重要课题。微软研究院最新推出的GraphRAG技术,为我们提供了一个创新的解决方案。今天,我们就来聊聊这项技术是如何工作的,以及它将如何改变我们的信息处理方式。

    什么是GraphRAG?

    GraphRAG(Graph Retrieval-Augmented Generation)是一种结合了知识图谱和检索增强生成(RAG)的技术。它能够帮助大型语言模型(LLM)更好地理解并总结大规模文本数据集中的信息。

    GraphRAG的工作原理

    GraphRAG的工作流程分为以下几个步骤:

    1. 文本分割:将大量文本分割成小块,以便语言模型处理。
    2. 元素提取:使用语言模型从文本中提取实体、关系和主张等元素。
    3. 构建知识图谱:将提取的元素构建成知识图谱,形成实体和关系的网络。
    4. 社区检测:利用算法将知识图谱中的实体分组成具有强关联性的社区。
    5. 社区摘要:为每个社区生成摘要,这些摘要能够全面覆盖输入文档的内容。
    6. 查询响应:当用户提出问题时,系统会使用社区摘要生成部分回答,然后汇总这些回答生成最终的全局答案。

    GraphRAG的优势

    • 全面性:GraphRAG能够提供更全面的答案,因为它考虑了整个文本数据集的内容。
    • 多样性:通过社区检测和摘要,GraphRAG能够从不同角度和层面提供信息。
    • 效率:与传统的RAG技术相比,GraphRAG在处理大规模文本时更为高效。

    实际应用案例

    为了评估GraphRAG技术,研究者们使用了两个真实世界的数据集:技术播客的转录文本和新闻文章。他们让语言模型基于这些数据集的简短描述生成了一系列问题,并使用GraphRAG来回答这些问题。结果表明,GraphRAG在生成全面和多样化答案方面,明显优于传统的RAG方法。

    未来展望

    GraphRAG技术为处理大规模文本数据提供了新的可能性。随着技术的不断发展,我们期待GraphRAG能够在更多领域展现其强大的能力,例如自动生成报告、数据分析和知识发现等。

    结语

    GraphRAG的推出,不仅是技术上的一次飞跃,也为信息检索和摘要领域带来了新的思路。随着技术的不断完善,我们相信GraphRAG将在未来发挥更大的作用。

    想要了解更多关于GraphRAG的信息,或者开始使用这项技术,请访问微软研究院的论文。让我们一起探索智能摘要技术的未来。


    希望这篇博客文章能够帮助您更好地了解GraphRAG技术,并激发您探索和应用这项技术的兴趣。如果您有任何问题或需要更多信息,请随时与我联系。

  • GeneralAgent:从大型语言模型到智能代理

    引言

    近年来,大型语言模型(LLM)在自然语言处理领域取得了显著的进展。然而,如何将 LLM 的强大能力应用到实际的业务场景中,仍然是一个充满挑战的任务。GeneralAgent 框架应运而生,它旨在将 LLM 与 Python 无缝集成,为构建智能代理提供一个灵活、高效的平台。

    GeneralAgent 框架概述

    GeneralAgent 是一个 Python 原生的代理框架,其核心目标是简化 LLM 在实际应用中的开发流程。与其他代理框架相比,GeneralAgent 具有以下优势:

    • 工具调用: GeneralAgent 不依赖于 LLM 的 function call 功能,而是通过 Python 代码解释器来调用工具,从而实现更灵活、可控的工具调用方式。
    • 序列化: GeneralAgent 支持序列化代理的状态,包括记忆和 Python 执行状态,方便开发者随时保存和恢复代理的状态。
    • 自我调用: GeneralAgent 支持代理的自我调用和堆栈记忆,能够最小化 LLM 的调用次数,从而高效地处理复杂任务。
    • 部署服务: GeneralAgent 可以与 AgentServer 配合使用,快速为大规模用户提供代理服务。

    GeneralAgent 功能介绍

    函数调用

    GeneralAgent 允许开发者将 Python 函数注册到代理中,并通过自然语言指令来调用这些函数。例如,我们可以定义一个获取天气信息的函数:

    def get_weather(city: str) -> str:
        """
        get weather information
        @city: str, city name
        @return: str, weather information
        """
        return f"{city} weather: sunny"

    然后将该函数注册到代理中:

    agent = Agent('你是一个天气小助手', functions=[get_weather])

    当用户询问 “成都天气怎么样?” 时,代理会自动调用 get_weather 函数,并将 “成都” 作为参数传递给该函数,最终返回 “成都天气: 晴朗”。

    知识库

    GeneralAgent 支持将外部知识库集成到代理中,从而增强代理的知识范围。开发者可以将知识库文件路径传递给代理,代理会自动加载并索引知识库内容。

    knowledge_files = ['../docs/paper/General_Agent__Self_Call_And_Stack_Memory.pdf']
    agent = Agent('你是AI助手,用中文回复。', workspace='9_knowledge_files', knowledge_files=knowledge_files)

    当用户提出问题时,代理会先在知识库中搜索相关信息,并将搜索结果作为 LLM 的输入,从而生成更准确、全面的答案。

    序列化

    GeneralAgent 支持序列化代理的状态,包括 LLM 的对话历史和 Python 解释器的状态。开发者可以使用 agent.save() 方法将代理的状态保存到磁盘,并使用 agent.load() 方法从磁盘加载代理的状态。

    # agent序列化位置,运行过程中会自动保存LLM的messages和python解析器的状态
    workspace='./5_serialize'
    
    role = 'You are a helpful agent.'
    agent = Agent(workspace=workspace)
    agent.user_input('My name is Shadow.')
    
    agent = None
    agent = Agent(role, workspace=workspace)
    agent.user_input('What is my name?')

    工作流

    GeneralAgent 支持定义复杂的工作流,并通过多个步骤来完成任务。开发者可以使用 agent.run() 方法执行单个步骤,并使用 Python 代码控制工作流的执行逻辑。

    # 工作流: 写小说
    from GeneralAgent import Agent
    from GeneralAgent import skills
    
    # 步骤0: 定义Agent
    agent = Agent('你是一个小说家')
    
    # 步骤1: 从用户处获取小说的名称和主题
    # topic = skills.input('请输入小说的名称和主题: ')
    topic = '小白兔吃糖不刷牙的故事'
    
    # 步骤2: 小说的概要
    summary = agent.run(f'小说的名称和主题是: {topic},扩展和完善一下小说概要。要求具备文艺性、教育性、娱乐性。')
    
    # 步骤3: 小说的章节名称和概要列表
    chapters = agent.run('输出小说的章节名称和每个章节的概要,返回列表 [(chapter_title, chapter_summary), ....]', return_type=list)

    多代理协作

    GeneralAgent 支持多个代理协作完成任务。开发者可以创建多个代理实例,并为每个代理分配不同的角色和任务。代理之间可以通过消息传递进行通信和协作。

    # 多Agent配合完成任务
    from GeneralAgent import Agent
    story_writer = Agent('你是一个故事创作家,根据大纲要求或者故事梗概,返回一个更加详细的故事内容。')
    humor_enhancer = Agent('你是一个润色作家,将一个故事进行诙谐润色,增加幽默元素。直接输出润色后的故事')

    多模态输入

    GeneralAgent 支持多模态输入,例如文本、图片、音频等。开发者可以将多模态数据封装成数组,并传递给 agent.user_input() 方法或 agent.run() 方法。

    # 支持多模态: 图片输入
    from GeneralAgent import Agent
    
    agent = Agent('You are a helpful assistant.')
    agent.user_input(['what is in the image?', {'image': '../docs/images/self_call.png'}])

    总结

    GeneralAgent 框架为构建智能代理提供了一个强大、灵活的平台,其丰富的功能和易用的 API 可以帮助开发者快速构建各种类型的智能代理应用。随着 LLM 技术的不断发展,GeneralAgent 框架将会在更多领域发挥重要作用。

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网
Page Stats: PV: 2377 | UV: 1255
Last updated: 2025-06-27 09:03:59
沪ICP备2024052574号-1