手记

9 个开源库,作为 AI 开发者必须掌握的 🧙‍♂️ 🪄

概要:

对我来说,人工智能到处都有。人人都想搞人工智能。
但有时候,很难搞清楚要用哪些工具才能在你的应用里成功地加入AI功能。

所以我整理了一份资源列表,这里你可以学到如何掌握AI魔法。

这是一张有趣的动图。

zh: ……

1. Composio 👑:让AI自动化快10倍 🚀

工具和集成的构成了构建AI的核心部分。

我一直在开发AI工具和代理,但工具的准确性一直是个大问题,直到我遇到了Composio,这才解决了这个问题。

Composio让集成流行应用如GitHub、Slack、Jira、Airtable等变得更简单,利用AI代理来构建复杂的自动化工作流程。

它为您的用户处理身份验证和授权,以便进行集成。这样您就可以安心构建自己的AI应用程序。而且它已通过SOC2认证。

那么,你可以这样开始。

Python

请运行以下命令来安装 composio-core:

pip install composio-core

注意:请确保您已安装 Python 才能执行上述命令。

进入全屏,退出全屏

添加 GitHub 整合

    composio add github

进入全屏 退出全屏

Composio为您处理用户的登录验证和权限管理。

这里是如何使用GitHub来给仓库点星。

    from openai import OpenAI
    from composio_openai import ComposioToolSet, App

    openai_client = OpenAI(api_key="******OPENAIKEY******")

    # 初始化 Composio 工具集
    composio_toolset = ComposioToolSet(api_key="**\\*\\***COMPOSIO_API_KEY**\\*\\***")

    ## 步骤 4
    # 获取预配置的 GitHub 工具
    actions = composio_toolset.get_actions(actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER])

    ## 步骤 5
    my_task = "在 GitHub 上给 ComposioHQ/composio 仓库点星星"

    # 创建一个聊天完成请求以决定执行哪个操作
    response = openai_client.chat.completions.create(
    model="gpt-4-turbo",
    tools=actions, # 传递之前获取的操作
    messages=[
        {"role": "system", "content": "你是一个乐于助人的助手。"},
        {"role": "user", "content": my_task}
      ]
    )

点击全屏模式进入。需要退出时,再点一下退出。

用这个Python脚本让代理执行给定的指令。

Composio与诸如LangChain、LlamaIndex、CrewAi等著名框架一起工作。

更多信息,请访问官方文档页面。对于更复杂的示例,请参见仓库中的示例

(这是一个展示 composio 动作的 GIF 图片)

给 Composio 仓库点个星 ⭐](https://dub.composio.dev/FZLK76b)

zh: 此处省略

2. Unsloth: 更快速的AI模型训练和微调

训练和微调大规模语言模型是人工智能工程中至关重要的环节。

在很多情况下,专有模型可能不适用于某些情况。这可能涉及成本、个性化或隐私。到了某个时候,你需要在自定义数据集上调整你的模型。目前,Unsloth 是微调和训练 LLMs 的最佳库之一。

它支持全模型、LoRA 和 QLoRA 的大型语言模型的微调,包括 Llama-3 和 Mistral,以及诸如 Yi 和 Open-hermes 等衍生模型。它实现了自定义的 Triton 内核和手动反向传播引擎以加快模型训练的速度。

首先,安装Unsloth,使用pip安装,并确保你安装了torch 2.4CUDA 12.1

在命令行中运行以下命令来安装和升级pip:

pip install --upgrade pip
这将升级pip到最新版本.
pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
这将安装特定版本的unsloth包.

进入全屏 退出全屏

这里有一个简单的脚本,用于在数据集上使用SFT(有监督微调)训练Mistral模型。

    从 unsloth 导入 FastLanguageModel 和 is_bfloat16_supported
    导入 torch
    从 trl 导入 SFTTrainer
    从 transformers 导入 TrainingArguments
    从 datasets 导入 load_dataset
    max_seq_length = 2048 # 支持内部 RoPE Scaling,所以可以随意选择!
    # 获取 LAION 数据集
    url = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"
    dataset = load_dataset("json", data_files = {"train" : url}, split = "train")

    # 支持的 4bit 预量化模型,支持更快的下载速度和避免内存溢出(OOMs)。
    fourbit_models = [
        "unsloth/mistral-7b-v0.3-bnb-4bit",      # 新的 Mistral v3,速度提高一倍!
    ] # 更多模型在 https://huggingface.co/unsloth

    model, tokenizer = FastLanguageModel.from_pretrained(
        model_name = "unsloth/llama-3-8b-bnb-4bit",
        max_seq_length = max_seq_length,
        dtype = None,
        load_in_4bit = True,
    )

    # 为模型进行修补并添加快速 LoRA 权重
    model = FastLanguageModel.get_peft_model(
        model,
        r = 16,
        target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                          "gate_proj", "up_proj", "down_proj",],
        lora_alpha = 16,
        lora_dropout = 0, # 支持任何值,但= 0 是优化的
        bias = "none",    # 支持任何值,但= "none" 是优化的
        # [NEW] 'unsloth' 可以减少 30% 的 VRAM 使用量,并支持 2 倍更大的批次大小。
        use_gradient_checkpointing = "unsloth", # True 或 'unsloth',适用于非常长的上下文
        random_state = 3407,
        max_seq_length = max_seq_length,
        use_rslora = False,  # 我们支持秩稳定的 LoRA
        loftq_config = None, # 以及 LoftQ
    )

    trainer = SFTTrainer(
        model = model,
        train_dataset = dataset,
        dataset_text_field = "text",
        max_seq_length = max_seq_length,
        tokenizer = tokenizer,
        args = TrainingArguments(
            per_device_train_batch_size = 2,
            gradient_accumulation_steps = 4,
            warmup_steps = 10,
            max_steps = 60,
            fp16 = not is_bfloat16_supported(),
            bf16 = is_bfloat16_supported(),
            logging_steps = 1,
            output_dir = "outputs",
            optim = "adamw_8bit",
            seed = 3407,
        ),
    )
    trainer.train()

请进入全屏,请退出全屏

详情请参阅官方文档

给 Unsloth 仓库点个星 (https://github.com/unslothai/unsloth)⭐

zh: zh: (省略)

3. DsPy: 一个用于编程大模型的框架

阻碍LLM在实际应用中使用的一个因素是它们的随机行为。在这些情况下,提示它们生成所需答案的失败率很高。

DsPy 正在处理这个问题。它编程大模型以获得最高可靠性,而不是依赖提示。

DSPy 通过做两件主要的事情来简化了。

  1. 将程序流程与参数分离: 此功能将您的程序流程(您采取的步骤)与每一步的具体操作细节(LM提示和权重)分离。这使得管理和更新您的系统变得更加容易。
  2. 引入新的优化器: DSPy 使用高级算法,根据您的目标(如提高准确性和减少错误)自动调整LM提示和权重。

查看这个入门指南,了解如何使用DsPy的更多方法。


这是一张与间谍相关的gif图片。

给 DsPy 仓库点个星 ⭐ (https://github.com/stanfordnlp/dspy)

……

4. TaiPy: 使用 Python 建立更快的網頁應用

Taipy 是一个基于 Python 的开源软件,旨在为生产环境构建 AI 网络应用程序。它通过让 Python 开发者能够将演示程序部署到生产环境,增强了 Streamlit 和 Gradio 这两个工具。

Taipy 是设计给数据科学家和机器学习工程师,用来构建数据和AI的网页应用程序。

  1. 帮助构建可投入生产的 web 应用程序
  2. 只需要 Python 就行了。
  3. 专注于数据和 AI 算法,而无需担心开发和部署的复杂性。

快速用 pip 来使用它吧。

在终端中输入以下命令来安装Taipy库:
pip install taipy

进入全屏,退出全屏

这是一个使用Taipy构建的简单应用程序,展示了如何创建一个简单的电影推荐系统。

    import taipy as tp
    import pandas as pd
    from taipy import Config, Scope, Gui

    # 定义辅助函数

    # 回调定义 - 提交带有选择的流派的场景
    def on_genre_selected(state):
        scenario.selected_genre_node.write(state.selected_genre)
        tp.submit(scenario)
        state.df = scenario.filtered_data.read()

    ## 设置初始值为'Action'
    def on_init(state):
        on_genre_selected(state)

    # 过滤函数 - 任务
    def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
        filtered_dataset = initial_dataset[initial_dataset["genres"].str.contains(selected_genre)]
        filtered_data = filtered_dataset.nlargest(7, "Popularity %")
        return filtered_data

    # 主脚本
    if __name__ == "__main__":
        # Taipy 场景和数据管理

        # 加载使用 Taipy Studio 创建的配置
        Config.load("config.toml")
        scenario_cfg = Config.scenarios["scenario"]

        # 启动 Taipy 核心服务
        tp.Core().run()

        # 创建一个场景
        scenario = tp.create_scenario(scenario_cfg)

        # Taipy 用户界面
        # 让我们为完整的应用程序添加一个 GUI

        # 获取流派列表
        genres = [
            "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX",
            "Romance", "Sci-Fi", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir",
            "War", "Musical", "Documentary"
        ]

        # 初始化变量
        df = pd.DataFrame(columns=["Title", "Popularity %"])
        selected_genre = "Action"

        # 用户界面定义
        my_page = """
    # 基于电影推荐

    ## 选择您最喜欢的电影类型

    ## 以下是按受欢迎程度排名的前七名电影

        """

        Gui(page=my_page).run()

全屏 退出

看看文档了解更多。

给 Taipy 点个星 ⭐

zh: ……

5. Phidata: 构建带有记忆功能的LLM智能代理。

通常,让代理能够正常工作不像听起来那么容易。管理内存、缓存以及工具的执行可能会变得相当棘手。

Phidata 是一个开源框架,提供了一种方便且可靠的构建方式来构建具有长期记忆和上下文知识,并能通过函数调用来执行操作的智能代理。

通过 pip 安装 Phidata,开始使用它

pip install -U phidata

(这会更新安装 phidata 依赖包)

点击进入全屏模式,点击退出全屏模式

让我们创建一个能查询财务信息的简单助手吧。

    从phi.assistant import Assistant
    从phi.llm.openai import OpenAIChat
    从phi.tools.yfinance import YFinanceTools

    assistant = Assistant(
        llm=OpenAIChat(model="gpt-4o"),
        tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
        show_tool_calls=True,
        markdown=True,
    )
    assistant.print_response("NVDA的当前股价是多少")
    assistant.print_response("请使用所有可用工具,撰写一份NVDA与AMD的对比分析。")

进入全屏模式,退出全屏

一个可以浏览网页的助手。

    from phi.assistant import Assistant
    from phi.tools.duckduckgo import DuckDuckGo

    assistant = Assistant(tools=[DuckDuckGo()], show_tool_calls=True)
    assistant.print_response("法国现在发生了什么事?", markdown=True)

进入全屏,退出全屏

参阅以下文档页面或直接文档以了解示例和信息。

星启数据仓库 ⭐ 点击这里

zh: (此处省略或被删节)

6. Phoenix: 让大语言模型的监控更高效

构建AI应用程序时,只通过增加一个监控层才能完成。通常,LLM应用程序包含许多组件,如提示、模型温度、p值(p-value)等,即使是最细微的调整也可能会显著影响结果。

这可能会让应用程序变得非常不稳定和不可靠。这就是 LLM 可观测性发挥作用的地方。ArizeAI 的 Phoenix 让追踪 LLM 执行过程变得很简单。

这是一个开源的人工智能可观测平台,旨在实验、评估和解决问题。它提供了:

  • 跟踪 - 使用基于OpenTelemetry的工具来跟踪您的LLM应用程序的运行时间。
  • 评估 - 利用LLM进行响应和检索评估,以基准测试您的应用程序的性能。
  • 数据集 - 创建用于实验、评估和微调的示例版本化数据集。
  • 实验 - 跟踪并评估提示、LLM和检索方法的变化。

凤凰不仅与供应商和语言无关,还支持多种框架,如LlamaIndex、LangChain、DSPy等,同时还支持提供大语言模型(LLM)的供应商如OpenAI和Bedrock。

它可以在各种环境中运行,包括 Jupyter 笔记本环境、本地计算机、容器或云环境。

开始使用Phoenix很简单。

您可以使用pip来安装arize-phoenix库:

    pip install arize-phoenix

全屏模式,退出全屏

首先,打开Phoenix应用。

# 引入phoenix库并将其别名为px
import phoenix as px
# 启动应用程序并将其存储在session变量中
session = px.launch_app()

切换到全屏 退出全屏

这将会启动Phoenix服务器。

你可以现在为你的AI应用设置跟踪,随着追踪数据流进来时调试你的应用。

要使用LlamaIndex的一键功能,首先需要安装集成。

在终端中运行以下命令: pip install 'llama-index>=0.10.44'
这将安装或升级llama-index到0.10.44或更高版本。

全屏 退出全屏

    import 凤凰 as 凤凰
    from 开放推理.llama_index import LlamaIndexInstrumentor
    import os
    from gcsfs import GCSFileSystem
    from llama_index.core import (
        Settings,
        VectorStoreIndex,
        StorageContext,
        set_global_handler,
        load_index_from_storage
    )
    from llama_index.embeddings.openai import OpenAIEmbedding
    from llama_index.llms.openai import OpenAI
    import llama_index

    # 若要在Phoenix中查看跟踪,您需要首先启动Phoenix服务器。可以通过运行以下命令来实现:
    session = px.launch_app()

    # 初始化LlamaIndex自动仪器化
    LlamaIndexInstrumentor().instrument()

    os.environ["OPENAI_API_KEY"] = "<ENTER_YOUR_OPENAI_API_KEY_HERE>"

    # LlamaIndex应用程序的初始化可能因您的应用程序而异
    Settings.llm = OpenAI(model="gpt-4-turbo-preview")
    Settings.embed_model = OpenAIEmbedding(model="text-embedding-ada-002")

    # 加载您的数据并创建索引。这里我们提供了文档中的示例
    file_system = GCSFileSystem(project="public-assets-275721")
    index_path = "arize-phoenix-assets/datasets/unstructured/llm/llama-index/arize-docs/index/"
    storage_context = StorageContext.from_defaults(
        fs=file_system,
        persist_dir=index_path,
    )

    index = load_index_from_storage(storage_context)

    query_engine = index.as_query_engine()

    # 查询您的LlamaIndex应用程序
    query_engine.query("生命的意义是什么?")
    query_engine.query("我如何部署Arize?")

    # 在Phoenix UI中查看跟踪
    px.active_session().url

进入全屏:退出全屏

当你执行了足够多的查询或对话后,你可以刷新浏览器 URL 来查看界面的详细信息。

查看他们的文档以获取更多关于追踪、版本管理和评估的示例。

Star Phoenix 仓库 ⭐

zh: zh: (此处省略)

7. Airbyte:可靠的、易于扩展的数据管道解决方案

数据对于构建AI应用程序至关重要,特别是在实际应用中,你必须处理来自多种渠道的大量数据。Airbyte在这方面表现尤为突出。

Airbyte 提供了一个广泛的 目录,包括超过 300 个连接器,针对 API、数据库、数据仓库和数据湖。

Airbyte 还有一个叫 PyAirByte 的 Python 插件。这个插件支持像 LangChain 和 LlamaIndex 这样的流行框架,这样就可以轻松地将数据从多个来源迁移至您的生成式 AI 应用程序。

看看这个notebook,了解PyAirByte与LangChain结合的详细信息。

更多信息,请查看官方文档


"这是一段有趣的空气波纹gif动画。"

给 AirByte 点赞 ⭐

此处省略

8. AgentOps: 代理监控和可观测性

就像传统软件系统一样,AI代理程序需要持续监控。这一点非常重要,以确保其行为不会偏离既定目标。

AgentOps 提供了一套全面的解决方案来监控并观察 AI 代理程序。

它提供了回放分析工具、LLM成本管理、代理性能评估、合规性与安全性保障等功能,并且与CrewAI、AutoGen和LangChain等框架实现了原生集成。

通过pip安装AgentOps,开始你的使用之旅。

在命令行中运行 `pip install agentops`,这将安装agentops库。

进入全屏、退出全屏

初始化 AgentOps 客户端,即可在每次 LLM 请求时自动获取分析数据。

    import agentops

    # 注释:程序代码开始(例如在 main.py 或 __init__.py 中)
    agentops.init( < INSERT YOUR API KEY HERE >)

    ...

    # 注释:(可选:记录特定函数)
    @agentops.record_action('示例函数被记录')
    def sample_function(...):
        ...

    # 注释:程序结束运行
    agentops.end_session('Success')
    # 注释:搞定啦 🎉

进入全屏 退出全屏

参阅他们的文档以了解更多详情。


AgentOps 动图展示

Star AgentOps 代码库 ⭐


9. [RAGAS]: RAG评估框架

构建RAG管道是具有挑战性的,但要在实际场景中验证其有效性同样具有挑战性。尽管RAG应用框架有所进步,确保其对实际用户可靠仍然很难,尤其是在错误检索代价高昂的情况下。

RAGAS 是一个用于解决这个问题的框架工具。它帮助你评估你的检索增强生成(RAG)流程。

它帮助你生成合成测试数据集,测试你的RAG (检索和生成)管道的效果,并监控你的RAG应用在生产中的表现。

了解更多,请查看文档以了解如何使用RAGAS来优化您的新的和现有的RAG管道。

Star RAGAS ⭐


感谢您阅读本文。如果您建立过或使用过任何其他的开源AI项目,请在下面留言分享一下。

0人推荐
随时随地看视频
慕课网APP