”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 用于构建生成式人工智能应用程序的开源框架

用于构建生成式人工智能应用程序的开源框架

发布于2024-11-09
浏览:500

Open Source Frameworks for Building Generative AI Applications

有许多令人惊叹的工具可以帮助构建生成式人工智能应用程序。但开始使用新工具需要时间学习和练习。

因此,我创建了一个存储库,其中包含用于构建生成人工智能应用程序的流行开源框架的示例。

这些示例还展示了如何将这些框架与 Amazon Bedrock 结合使用。

您可以在这里找到存储库:

https://github.com/danilop/oss-for-generative-ai

在本文的其余部分,我将描述我选择的框架、存储库中示例代码的内容以及如何在实践中使用它们。

包含的框架

  • LangChain:用于开发由语言模型驱动的应用程序的框架,具有以下示例:

    • 基础模型调用
    • 链接提示
    • 构建 API
    • 创建客户端
    • 实现聊天机器人
    • 使用基岩代理
  • LangGraph:LangChain 的扩展,用于使用大型语言模型 (LLM) 构建有状态的多参与者应用程序

  • Haystack:用于构建搜索系统和语言模型应用程序的端到端框架

  • LlamaIndex:基于 LLM 的应用程序的数据框架,示例包括:

    • RAG(检索增强生成)
    • 建立代理
  • DSPy:使用大型语言模型解决人工智能任务的框架

  • RAGAS:评估检索增强生成(RAG)管道的框架

  • LiteLLM:标准化来自不同提供商的 LLM 的使用的库

框架概述

浪链

用于开发由语言模型支持的应用程序的框架。

主要特点:

  • 适用于法学硕士应用程序的模块化组件
  • 复杂 LLM 工作流程的链和代理
  • 情境交互的记忆系统
  • 与各种数据源和API集成

主要用例:

  • 构建对话式人工智能系统
  • 创建特定领域的问答系统
  • 开发人工智能驱动的自动化工具

郎图

LangChain 的扩展,用于构建有状态的多参与者。法学硕士申请

主要特点:

  • 基于图的工作流程管理
  • 复杂代理交互的状态管理
  • 设计和实现多代理系统的工具
  • 循环工作流程和反馈循环

主要用例:

  • 创建协作人工智能代理系统
  • 实施复杂、有状态的人工智能工作流程
  • 开发人工智能驱动的模拟和游戏

草垛

用于构建生产就绪的 LLM 应用程序的开源框架。

主要特点:

  • 具有灵活管道的可组合人工智能系统
  • 多模态AI支持(文本、图像、音频)
  • 生产就绪,具有可序列化的管道和监控

主要用例:

  • 构建 RAG 管道和搜索系统
  • 开发对话式人工智能和聊天机器人
  • 内容生成和摘要
  • 创建具有复杂工作流程的代理管道

骆驼指数

用于构建 LLM 支持的应用程序的数据框架。

主要特点:

  • 高级数据摄取和索引
  • 查询处理和响应合成
  • 支持各种数据连接器
  • 可定制的检索和排名算法

主要用例:

  • 创建知识库和问答系统
  • 在大型数据集上实现语义搜索
  • 构建情境感知人工智能助手

DSPy

通过声明性和可优化的语言模型程序解决人工智能任务的框架。

主要特点:

  • LLM交互的声明式编程模型
  • LLM提示和参数自动优化
  • LLM 输入/输出的基于签名的类型系统
  • 用于自动提示改进的提词器(现在是优化器)

主要用例:

  • 开发强大且优化的 NLP 管道
  • 创建自我改进的人工智能系统
  • 利用法学硕士实施复杂的推理任务

拉加斯

检索增强生成(RAG)系统的评估框架。

主要特点:

  • RAG 管道的自动评估
  • 多种评估指标(忠实度、上下文相关性、答案相关性)
  • 支持不同类型的问题和数据集
  • 与流行的 RAG 框架集成

主要用例:

  • RAG 系统性能基准测试
  • 确定 RAG 管道需要改进的领域
  • 比较不同的 RAG 实现

莱特法学硕士

多个 LLM 提供商的统一界面。

主要特点:

  • 100 个 LLM 模型的标准化 API
  • 自动回退和负载平衡
  • 缓存和重试机制
  • 使用情况跟踪和预算管理

主要用例:

  • 简化多法学硕士申请开发
  • 实施模型冗余和后备策略
  • 管理不同提供商之间的 LLM 使用情况

结论

如果您使用过这些工具,请告诉我。我错过了你想与他人分享的东西吗?请随意回馈存储库!

版本声明 本文转载于:https://dev.to/aws/open-source-frameworks-for-building-generative-ai-applications-532b?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 人脸检测失败原因及解决方案:Error -215
    人脸检测失败原因及解决方案:Error -215
    错误处理:解决“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解决此问题,必须确保提供给HAAR CASCADE XML文件的路径有效。在提供的代码片段中,级联分类器装有硬编码路径,这可能对您的系统不准确。相反,OPENCV提...
    编程 发布于2025-07-03
  • 图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    在chrome 在使用Chrome and IE9中的图像时遇到的一个频繁的问题是围绕图像的持续薄薄边框,尽管指定了图像,尽管指定了;和“边境:无;”在CSS中。要解决此问题,请考虑以下方法: Chrome具有忽略“ border:none; none;”的已知错误,风格。要解决此问题,请使用以下...
    编程 发布于2025-07-03
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-07-03
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-07-03
  • 在Pandas中如何将年份和季度列合并为一个周期列?
    在Pandas中如何将年份和季度列合并为一个周期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 这个目标是通过组合“年度”和“季度”列来创建一个新列,以获取以下结果: [python中的concate...
    编程 发布于2025-07-03
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-07-03
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-07-03
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-07-03
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-07-03
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-07-03
  • 如何在鼠标单击时编程选择DIV中的所有文本?
    如何在鼠标单击时编程选择DIV中的所有文本?
    在鼠标上选择div文本单击带有文本内容,用户如何使用单个鼠标单击单击div中的整个文本?这允许用户轻松拖放所选的文本或直接复制它。 在单个鼠标上单击的div元素中选择文本,您可以使用以下Javascript函数: function selecttext(canduterid){ if(do...
    编程 发布于2025-07-03
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-07-03
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-07-03
  • 如何在Chrome中居中选择框文本?
    如何在Chrome中居中选择框文本?
    选择框的文本对齐:局部chrome-inly-ly-ly-lyly solument 您可能希望将文本中心集中在选择框中,以获取优化的原因或提高可访问性。但是,在CSS中的选择元素中手动添加一个文本 - 对属性可能无法正常工作。初始尝试 state)</option> < op...
    编程 发布于2025-07-03
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-07-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3