作为 AI 开发人员必须掌握的 9 个开源库🧙♂️🪄
TL;DR
对我来说,人工智能无处不在。每个人都想做人工智能。
但有时,很难知道需要掌握哪些工具才能在你的应用中成功实现人工智能功能。
因此,我整理了一份存储库列表,您可以在其中学习掌握 AI 巫术。
1. Composio 👑:构建 AI 自动化速度提高 10 倍 🚀
工具和集成构成了构建 AI 代理的核心。
我一直在构建 AI 工具和代理,但工具准确性一直是个问题,直到我遇到 Composio。
Composio 使 GitHub、Slack、Jira、Airtable 等流行应用程序与 AI 代理的集成变得更加容易,从而可以构建复杂的自动化。
它代表您的用户处理集成的用户身份验证和授权。因此,您可以安心构建 AI 应用程序。并且它已获得 SOC2 认证。
那么,您可以按照以下方法开始使用它。
Python
pip install composio-core
添加 GitHub 集成。
composio add github
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}
]
)
运行此 Python 脚本以使用代理执行给定的指令。
Composio 与 LangChain、LlamaIndex、CrewAi 等著名框架兼容。
欲了解更多信息,请访问官方 文档,欲查看更复杂的示例,请参阅存储库的 示例 部分。
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"
这是一个使用 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()
更多信息请参考官方文档。
3. DsPy:LLM 编程框架
阻碍 LLM 在生产用例中使用的一个因素是其随机性。对于这些用例来说,促使它们输出所需的响应失败率很高。
DsPy 正在解决这个问题。它不是提示,而是对 LLM 进行编程,以获得最高的可靠性。
DSPy 通过做两件关键的事情来简化这一过程:
- 将程序流程与参数分离: 此功能将程序流程(您执行的步骤)与每个步骤的具体执行细节(LM 提示和权重)分离。这使得您的系统管理和更新更加便捷。
- 引入新的优化器: DSPy 使用先进的算法,根据您的目标自动微调 LM 提示和权重,例如提高准确性或减少错误。
查看此 入门笔记本, 了解有关如何使用 DsPy 的更多信息。
4. TaiPy:使用 Python 更快地构建 AI Web 应用程序
Taipy 是一款基于 Python 的开源软件,旨在在生产环境中构建 AI Web 应用。它增强了 Streamlit 和 Gradio 的功能,使 Python 开发者能够在生产环境中部署演示应用。
Taipy 专为数据科学家和机器学习工程师构建数据和人工智能网络应用程序而设计。
- 支持构建可用于生产的 Web 应用程序
- 无需学习新语言。只需要 Python。
- 专注于数据和人工智能算法,无需开发和部署复杂性。
快速开始使用它 pip
。
pip install taipy
这个简单的 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()
查看 文档 以了解更多信息。
5. Phidata:构建具有记忆功能的LLM代理。
构建有效的代理通常并不像听起来那么容易。管理内存、缓存和工具执行可能会非常具有挑战性。
Phidata 是一个开源框架,它提供了一种方便可靠的方法来构建具有长期记忆、上下文知识和使用函数调用采取行动的能力的代理。
通过安装开始使用 Phidatapip
pip install -U phidata
让我们创建一个可以查询财务数据的简单助手。
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.")
一个可以上网的助手。
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)
有关示例和信息,请参阅官方文档。
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
首先,启动 Phoenix 应用程序。
import phoenix as px
session = px.launch_app()
这将启动 Phoneix 服务器。
您现在可以为您的 AI 应用程序设置跟踪,以便在跟踪流入时调试您的应用程序。
要使用 LlamaIndex 的一键功能,您必须先安装小型集成:
pip install 'llama-index>=0.10.44'
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
一旦您为应用程序执行了足够数量的查询(或聊天),您就可以通过刷新浏览器 URL 来查看 UI 的详细信息。
请参阅他们的 文档 以获取更多跟踪、数据集版本控制和评估示例。
7. Airbyte:可靠且可扩展的数据管道
数据对于构建 AI 应用至关重要,尤其是在生产环境中,您必须管理来自各种来源的海量数据。Airbyte 在这方面表现出色。
Airbyte 提供了超过 300 个用于 API、数据库、数据仓库和数据湖的连接器的广泛目录。
Airbyte 还提供了一个名为 PyAirByte 的 Python 扩展。此扩展支持 LangChain 和 LlamaIndex 等热门框架,让您可以轻松地将数据从多个来源迁移到 GenAI 应用程序。
查看此 笔记本 了解有关使用 LangChain 实现 PyAirByte 的详细信息。
欲了解更多信息,请查看 文档。
8. AgentOps:代理监控和可观察性
与传统软件系统一样,人工智能代理需要持续的监控和观察。这对于确保代理的行为不偏离预期至关重要。
AgentOps 为监控和观察 AI 代理提供了全面的解决方案。
它提供重放分析、LLM 成本管理、代理基准测试、合规性和安全性工具,并与 CrewAI、AutoGen 和 LangChain 等框架本地集成。
通过安装来开始使用 AgentOps pip
。
pip install agentops
初始化 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 🎉
请参阅他们的 文档 以了解更多信息。
9. RAGAS:RAG评估框架
构建 RAG 流程本身就充满挑战,但确定其在实际场景中的有效性又是另一回事。尽管 RAG 应用框架取得了一些进展,但确保其对实际用户的可靠性仍然困难重重,尤其是在错误检索成本高昂的情况下。
RAGAS 是一个旨在解决此问题的框架。它可以帮助您评估检索增强生成 (RAG) 流程。
它可以帮助您生成合成测试集,针对它们测试您的 RAG 管道,并在生产中监控您的 RAG 应用程序。
查看文档以了解如何使用 RAGAS 来改进新的和现有的 RAG 管道。
感谢您阅读本文。如果您构建或使用过其他开源 AI 存储库,请在下方评论。
文章来源:https://dev.to/composiodev/9-essential-open-source-libraries-to-master-as-an-ai-developer-o98