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

2025-05-24

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

TL;DR

对我来说,人工智能无处不在。每个人都想做人工智能。
但有时,很难知道需要掌握哪些工具才能在你的应用中成功实现人工智能功能。

因此,我整理了一份存储库列表,您可以在其中学习掌握 AI 巫术。

巫师 GIF


1. Composio 👑:构建 AI 自动化速度提高 10 倍 🚀

工具和集成构成了构建 AI 代理的核心。

我一直在构建 AI 工具和代理,但工具准确性一直是个问题,直到我遇到 Composio。

Composio 使 GitHub、Slack、Jira、Airtable 等流行应用程序与 AI 代理的集成变得更加容易,从而可以构建复杂的自动化。

它代表您的用户处理集成的用户身份验证和授权。因此,您可以安心构建 AI 应用程序。并且它已获得 SOC2 认证。

那么,您可以按照以下方法开始使用它。

Python

pip install composio-core
Enter fullscreen mode Exit fullscreen mode

添加 GitHub 集成。

composio add github
Enter fullscreen mode Exit fullscreen mode

Composio 代表您处理用户身份验证和授权。

以下是如何使用 GitHub 集成来为存储库加注星标的方法。

from openai import OpenAI
from composio_openai import ComposioToolSet, App

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

# Initialise the Composio Tool Set
composio_toolset = ComposioToolSet(api_key="**\\*\\***COMPOSIO_API_KEY**\\*\\***")

## Step 4
# Get GitHub tools that are pre-configured
actions = composio_toolset.get_actions(actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER])

## Step 5
my_task = "Star a repo ComposioHQ/composio on GitHub"

# Create a chat completion request to decide on the action
response = openai_client.chat.completions.create(
model="gpt-4-turbo",
tools=actions, # Passing actions we fetched earlier.
messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": my_task}
  ]
)
Enter fullscreen mode Exit fullscreen mode

运行此 Python 脚本以使用代理执行给定的指令。

Composio 与 LangChain、LlamaIndex、CrewAi 等著名框架兼容。

欲了解更多信息,请访问官方 文档,欲查看更复杂的示例,请参阅存储库的 示例 部分。

作曲 GIF

为 Composio 代码库加星标 ⭐


2. Unsloth:更快地训练和微调人工智能模型

训练和微调大型语言模型 (LLM) 是人工智能工程的关键部分。

很多情况下,专有模型可能无法满足需求。原因可能是成本、个性化或隐私问题。有时,你需要在自定义数据集上对模型进行微调。目前,Unsloth 是用于微调和训练 LLM 的最佳库之一。

它支持流行 LLM(包括 Llama-3 和 Mistral)及其衍生产品(如 Yi、Open-hermes 等)的完整版、LoRA 和 QLoRA 微调。它实现了自定义 triton 内核和手动反向传播引擎,以提高模型训练的速度。

要开始使用 Unsloth,请使用 安装它pip并确保您拥有torch 2.4 和 CUDA 12.1

pip install --upgrade pip
pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
Enter fullscreen mode Exit fullscreen mode

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

from unsloth import FastLanguageModel 
from unsloth import is_bfloat16_supported
import torch
from trl import SFTTrainer
from transformers import TrainingArguments
from datasets import load_dataset
max_seq_length = 2048 # Supports RoPE Scaling internally, so choose any!
# Get LAION dataset
url = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"
dataset = load_dataset("json", data_files = {"train" : url}, split = "train")

# 4bit pre quantized models we support for 4x faster downloading + no OOMs.
fourbit_models = [
    "unsloth/mistral-7b-v0.3-bnb-4bit",      # New Mistral v3 2x faster!
] # More models at 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,
)

# Do model patching and add fast LoRA weights
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, # Supports any, but = 0 is optimized
    bias = "none",    # Supports any, but = "none" is optimized
    # [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
    use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
    random_state = 3407,
    max_seq_length = max_seq_length,
    use_rslora = False,  # We support rank stabilized LoRA
    loftq_config = None, # And 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()
Enter fullscreen mode Exit fullscreen mode

更多信息请参考官方文档

Unsloth IMG

为 Unsloth 仓库加星标 ⭐


3. DsPy:LLM 编程框架

阻碍 LLM 在生产用例中使用的一个因素是其随机性。对于这些用例来说,促使它们输出所需的响应失败率很高。

DsPy 正在解决这个问题。它不是提示,而是对 LLM 进行编程,以获得最高的可靠性。

DSPy 通过做两件关键的事情来简化这一过程:

  1. 将程序流程与参数分离: 此功能将程序流程(您执行的步骤)与每个步骤的具体执行细节(LM 提示和权重)分离。这使得您的系统管理和更新更加便捷。
  2. 引入新的优化器:  DSPy 使用先进的算法,根据您的目标自动微调 LM 提示和权重,例如提高准确性或减少错误。

查看此 入门笔记本, 了解有关如何使用 DsPy 的更多信息。

dspy gif

为 DsPy 代码库加星标⭐


4. TaiPy:使用 Python 更快地构建 AI Web 应用程序

Taipy 是一款基于 Python 的开源软件,旨在在生产环境中构建 AI Web 应用。它增强了 Streamlit 和 Gradio 的功能,使 Python 开发者能够在生产环境中部署演示应用。

Taipy 专为数据科学家和机器学习工程师构建数据和人工智能网络应用程序而设计。

  1. 支持构建可用于生产的 Web 应用程序
  2. 无需学习新语言。只需要 Python。
  3. 专注于数据和人工智能算法,无需开发和部署复杂性。

快速开始使用它 pip

pip install taipy
Enter fullscreen mode Exit fullscreen mode

这个简单的 Taipy 应用程序演示了如何使用 Taipy 创建一个基本的电影推荐系统。

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

# Defining the helper functions

# Callback definition - submits scenario with genre selection
def on_genre_selected(state):
    scenario.selected_genre_node.write(state.selected_genre)
    tp.submit(scenario)
    state.df = scenario.filtered_data.read()

## Set initial value to Action
def on_init(state):
    on_genre_selected(state)

# Filtering function - task
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

# The main script
if __name__ == "__main__":
    # Taipy Scenario & Data Management

    # Load the configuration made with Taipy Studio
    Config.load("config.toml")
    scenario_cfg = Config.scenarios["scenario"]

    # Start Taipy Core service
    tp.Core().run()

    # Create a scenario
    scenario = tp.create_scenario(scenario_cfg)

    # Taipy User Interface
    # Let's add a GUI to our Scenario Management for a complete application

    # Get list of genres
    genres = [
        "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX"
        "Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary"
    ]

    # Initialization of variables
    df = pd.DataFrame(columns=["Title", "Popularity %"])
    selected_genre = "Action"

    # User interface definition
    my_page = """
# Film recommendation

## Choose your favorite genre
<|{selected_genre}|selector|lov={genres}|on_change=on_genre_selected|dropdown|>

## Here are the top seven picks by popularity
<|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|>
    """

    Gui(page=my_page).run()
Enter fullscreen mode Exit fullscreen mode

查看 文档 以了解更多信息。

taipy gif

加星 Taipy 仓库 ⭐


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

构建有效的代理通常并不像听起来那么容易。管理内存、缓存和工具执行可能会非常具有挑战性。

Phidata 是一个开源框架,它提供了一种方便可靠的方法来构建具有长期记忆、上下文知识和使用函数调用采取行动的能力的代理。

通过安装开始使用 Phidatapip

pip install -U phidata
Enter fullscreen mode Exit fullscreen mode

让我们创建一个可以查询财务数据的简单助手。

from phi.assistant import Assistant
from phi.llm.openai import OpenAIChat
from 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("What is the stock price of NVDA")
assistant.print_response("Write a comparison between NVDA and AMD, use all tools available.")
Enter fullscreen mode Exit fullscreen mode

一个可以上网的助手。

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

assistant = Assistant(tools=[DuckDuckGo()], show_tool_calls=True)
assistant.print_response("Whats happening in France?", markdown=True)
Enter fullscreen mode Exit fullscreen mode

有关示例和信息,请参阅官方文档。

Phidata IMG

星级 Phidata 存储库 ⭐


6. Phoenix:LLM 可观测性更加高效

只有添加可观察层,才能构建完整的 AI 应用程序。通常,LLM 应用程序包含许多可变部分,例如提示、模型温度、p 值等,即使细微的变化也会对结果产生重大影响。

这会使应用程序极不稳定且不可靠。这正是 LLM 可观察性发挥作用的地方。ArizeAI 的 Phoneix 可以方便地追踪 LLM 执行的整个过程。

它是一个开源的 AI 可观察性平台,专为实验、评估和故障排除而设计。它提供:

  • 跟踪 - 使用基于 OpenTelemetry 的仪器跟踪 LLM 应用程序的运行时。
  • 评估 - 利用 LLM 通过响应和检索评估来对应用程序的性能进行基准测试。
  • 数据集 ——创建用于实验、评估和微调的示例版本数据集。
  • 实验 ——跟踪和评估提示、LLM 和检索变化。

Phoenix 与供应商和语言无关,支持 LlamaIndex、LangChain、DSPy 等框架以及 OpenAI 和 Bedrock 等 LLM 提供商。

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

使用 Phoneix 很容易上手。

pip install arize-phoenix
Enter fullscreen mode Exit fullscreen mode

首先,启动 Phoenix 应用程序。

import phoenix as px
session = px.launch_app()
Enter fullscreen mode Exit fullscreen mode

这将启动 Phoneix 服务器。

您现在可以为您的 AI 应用程序设置跟踪,以便在跟踪流入时调试您的应用程序。

要使用 LlamaIndex 的一键功能,您必须先安装小型集成:

pip install 'llama-index>=0.10.44'
Enter fullscreen mode Exit fullscreen mode
import phoenix as px
from openinference.instrumentation.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

# To view traces in Phoenix, you will first have to start a Phoenix server. You can do this by running the following:
session = px.launch_app()

# Initialize LlamaIndex auto-instrumentation
LlamaIndexInstrumentor().instrument()

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

# LlamaIndex application initialization may vary
# depending on your application
Settings.llm = OpenAI(model="gpt-4-turbo-preview")
Settings.embed_model = OpenAIEmbedding(model="text-embedding-ada-002")

# Load your data and create an index. Here we've provided an example of our documentation
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()

# Query your LlamaIndex application
query_engine.query("What is the meaning of life?")
query_engine.query("How can I deploy Arize?")

# View the traces in the Phoenix UI
px.active_session().url
Enter fullscreen mode Exit fullscreen mode

一旦您为应用程序执行了足够数量的查询(或聊天),您就可以通过刷新浏览器 URL 来查看 UI 的详细信息。

请参阅他们的 文档 以获取更多跟踪、数据集版本控制和评估示例。

凤凰

星凤凰仓库⭐


7. Airbyte:可靠且可扩展的数据管道

数据对于构建 AI 应用至关重要,尤其是在生产环境中,您必须管理来自各种来源的海量数据。Airbyte 在这方面表现出色。

Airbyte 提供了超过 300 个用于 API、数据库、数据仓库和数据湖的连接器的广泛目录。

Airbyte 还提供了一个名为 PyAirByte 的 Python 扩展。此扩展支持 LangChain 和 LlamaIndex 等热门框架,让您可以轻松地将数据从多个来源迁移到 GenAI 应用程序。

查看此 笔记本 了解有关使用 LangChain 实现 PyAirByte 的详细信息。

欲了解更多信息,请查看 文档

空中字节 gif

星标 AirByte 存储库⭐


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

与传统软件系统一样,人工智能代理需要持续的监控和观察。这对于确保代理的行为不偏离预期至关重要。

AgentOps 为监控和观察 AI 代理提供了全面的解决方案。

它提供重放分析、LLM 成本管理、代理基准测试、合规性和安全性工具,并与 CrewAI、AutoGen 和 LangChain 等框架本地集成。

通过安装来开始使用 AgentOps  pip

pip install agentops
Enter fullscreen mode Exit fullscreen mode

初始化 AgentOps 客户端并自动获取每个 LLM 调用的分析。

import agentops

# Beginning of program's code (i.e. main.py, __init__.py)
agentops.init( < INSERT YOUR API KEY HERE >)

...

# (optional: record specific functions)
@agentops.record_action('sample function being record')
def sample_function(...):
    ...

# End of program
agentops.end_session('Success')
# Woohoo You're done 🎉
Enter fullscreen mode Exit fullscreen mode

请参阅他们的 文档 以了解更多信息。

代理操作

星级 AgentOps 存储库⭐


9. RAGAS:RAG评估框架

构建 RAG 流程本身就充满挑战,但确定其在实际场景中的有效性又是另一回事。尽管 RAG 应用框架取得了一些进展,但确保其对实际用户的可靠性仍然困难重重,尤其是在错误检索成本高昂的情况下。

RAGAS 是一个旨在解决此问题的框架。它可以帮助您评估检索增强生成 (RAG) 流程。

它可以帮助您生成合成测试集,针对它们测试您的 RAG 管道,并在生产中监控您的 RAG 应用程序。

查看文档以了解如何使用 RAGAS 来改进新的和现有的 RAG 管道。

RAGAS 文档

星级 RAGAS 存储库⭐


感谢您阅读本文。如果您构建或使用过其他开源 AI 存储库,请在下方评论。

文章来源:https://dev.to/composiodev/9-essential-open-source-libraries-to-master-as-an-ai-developer-o98
PREV
构建酷炫 AI 应用的 9 个必备开发工具🧙‍♂️🪄
NEXT
9 款用于构建下一代 AI 应用的尖端开源工具 🔮💡 9. ONNX Runtime - 生产级 AI 引擎,可加速训练