Project Icon

generativeAgent_LLM

交互式人类行为模拟框架

generativeAgent_LLM是一个基于Guidance、Langchain和本地LLM的生成式智能体框架。该项目支持记忆检索、反思、规划和对话生成等功能,能够模拟人类行为并实现交互。它在Langchain基础上进行了改进和扩展,添加了更多特性,更贴近原始论文的设计。除了支持本地LLM,项目还提供代理总结和采访等功能。同时包含详细使用说明和示例代码,便于快速上手和定制开发。

使用Guidance、Langchain和本地LLM的生成式智能体

这是论文《生成式智能体:人类行为的交互式模拟》的实现。本项目基于Langchain的实现,我们对其进行了改进并添加了更多功能,尽可能使其与原论文一致。 更多解释请查看我的Medium文章。

注意:我刚刚修复了当前提示和guidance之间的冲突。由于稳定性考虑,我建议使用guidance==0.063版本。

支持的功能:

  • 使用本地LLM
  • 记忆和检索
  • 反思
  • 计划(需要改进)
  • 反应和重新计划
  • 对话生成(需要改进)
  • 智能体摘要
  • 采访
  • Web界面(Gradio)

使用方法

安装

Python包:

  • Guidance pip install guidance==0.0.63
  • GPTQ-for-LLaMa
  • Langchain pip install langchain==0.0.190
  • Faiss (用于向量存储,可以自由更换为其他向量存储)

我使用的GPTQ-for-LLaMa是oobabooga的分支。你可以使用这个命令安装。

运行

请查看notebook文件。我使用的是wizard-mega-13B-GPTQ模型。你可以自由尝试其他模型。

Notebook

定义生成式智能体

description = "Sam是一名计算机专业的博士生;Sam喜欢计算机;Sam和他的朋友Bob住在一起;Sam的父亲是一名医生;Sam有一只叫Max的狗"
sam = GenerativeAgent(guidance=guidance, 
                      name='Sam',
                      age=23, 
                      des=description, 
                      trails='有趣,喜欢足球,玩CSGO', 
                      embeddings_model=embeddings_model)

添加记忆

sam_observations = [
    "Sam早上醒来",
    "Sam因为玩游戏感到疲劳",
    "Sam有一份人工智能课程的作业",
    "Sam看到Max生病了",
    "Bob向Sam打招呼",
    "Bob离开房间",
    "Sam向Bob说再见",
]
sam.add_memories(sam_observations)

摘要

summary = sam.get_summary(force_refresh=True)
print(summary)
"""
姓名: Sam (年龄: 23)
摘要: Sam是一名对计算机科学感兴趣的博士生,有一只名叫Max的狗。他正在学习人工智能课程,父亲是一名医生。Sam也是一名游戏玩家,与朋友Bob同住。此外,Sam是一个有爱心的人,因玩游戏感到疲劳,并向朋友Bob道别。Sam是一名主修计算机科学的博士生。他早上起床,与朋友Bob同住。Sam有一只名叫Max的狗,目前因玩游戏感到疲劳。Sam还有一份人工智能课程的作业。很难确定Sam对自己最近的生活进展的感受。但如果我们假设Sam对自己的进展感到满意,我们可以描述他的感受为满足或充实。
"""

计划和更新状态

status = sam.update_status()

替代文本

反应

bool_react, reaction, context = sam.react(observation='狗碗是空的', 
                                          observed_entity='狗碗', 
                                          entity_status='狗碗是空的')
print(f"{bool_react}\n反应: {reaction}\n上下文: {context}")
"""
是
反应: Sam可以给狗碗里加食物,然后叫Max过来吃。
上下文: Sam有一只名叫Max的狗,他是一名主修计算机科学的博士生。Sam的父亲是一名医生,Sam和朋友Bob住在一起。Sam喜欢计算机,目前正在学习人工智能课程。Sam因为玩游戏感到疲劳。Bob离开房间并向Sam打招呼。Sam早上醒来,看到狗碗是空的。
"""    

替代文本

对话生成

bool_react, reaction, context = sam.react(observation='Bob带着新电脑进入房间', 
                                          observed_entity=bob,
                                          entity_status='Bob正在设置他的新电脑')

print(sam.dialogue_list[0])
"""
2023年6月2日星期五,18:15

Bob: 嘿Sam,快看这个!我买了一台新电脑,太棒了。
Sam: 太好了,Bob。你需要帮忙设置吗?
Bob: 不用,我已经设置好了。这主要是用来玩游戏的,我真的很兴奋。
Sam: 太棒了。我一直对尝试新硬件感兴趣。也许我待会儿可以过来看看。
Bob: 好啊,当然可以。我刚才在想,也许你可以帮我调整一些设置。我对这些不太在行。
Sam: 没问题,我很乐意帮忙。你想什么时候开始?
Bob: 今晚晚些时候怎么样?我准备好了就给你打电话。
Sam: 没问题。你准备好了就告诉我,我就过来。
"""

采访

response = sam.interview('朋友', '你和谁住在一起?')
print(response)
"""
我和我的一个朋友住在一起,他叫Bob。
"""

许可证

知识共享署名-非商业性使用 (CC BY-NC-4.0)

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号