DevGang
Авторизоваться

9 библиотек с открытым исходным кодом, которые нужно освоить разработчику ИИ

Мир искусственного интеллекта полон возможностей, но для их реализации необходимы надежные инструменты. В этой статье мы рассмотрим 9 основных библиотек с открытым исходным кодом, которые станут незаменимыми помощниками для разработчика ИИ. Эти библиотеки предлагают широкий спектр функций, от автоматизации до мониторинга, и помогут вам создавать передовые решения в области искусственного интеллекта.

1. Composio: Создавайте автоматизацию искусственного интеллекта в 10 раз быстрее

Composio упрощает интеграцию популярных приложений, таких как GitHub, Slack, Jira, Airtable, а также использование ИИ для создания сложных систем автоматизации.

Она обрабатывает аутентификацию и авторизацию пользователей для интеграций от имени ваших пользователей. Так что вы можете спокойно создавать свои приложения ИИ, также она сертифицирована 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}
  ]
)

Composio работает с такими известными фреймворками, как LangChain, LlamaIndex, CrewAi и т.д.

Для получения дополнительной информации посетите официальную документацию, а для более сложных примеров смотрите разделы примеров репозитория.

2. Unsloth: Более быстрое обучение и тонкая настройка моделей ИИ

Обучение и тонкая настройка больших языковых моделей (LLM) являются важнейшими частями проектирования ИИ.

Во многих случаях фирменные модели могут не соответствовать цели. Это может быть стоимость, персонализация или конфиденциальность. В какой-то момент вам понадобится тонкая настройка вашей модели на пользовательском наборе данных. И прямо сейчас Unsloth является одной из лучших библиотек для тонкой настройки и обучения LLM.

Она поддерживает полную, LoRA и тонкую настройку QLoRA популярных LLM, включая Llama-3 и Mistral, а также их производные, такие как Yi, Open-hermes и т.д. Она реализует пользовательские ядра 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"

Вот простой скрипт для обучения модели Mistral на наборе данных с использованием SFT (контролируемая тонкая настройка).

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

Taipy — это программное обеспечение с открытым исходным кодом на основе Python, предназначенное для создания веб-приложений ИИ в производственных средах. Оно улучшает Streamlit и Gradio, позволяя разработчикам Python развертывать демонстрационные приложения в производственных средах.

Taipy предназначен для специалистов по обработке данных и инженеров машинного обучения, которые могут создавать веб-приложения на основе данных и искусственного интеллекта.

  • Позволяет создавать готовые к использованию веб-приложения.
  • Не нужно учить новые языки. Нужен только 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 — это фреймворк с открытым исходным кодом, который предлагает удобный и надежный способ создания ИИ с долговременной памятью, контекстными знаниями и способностью выполнять действия с помощью вызовов функций.

Начните работу с Phidata, установив ее через pip.

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-наблюдаемость стала эффективной

Создание приложений ИИ завершается только добавлением слоя наблюдаемости. Обычно приложение LLM имеет много подвижных частей, таких как подсказки, температура модели, p-значение и т. д., которые могут существенно повлиять на результаты даже при небольшом изменении.

Это может сделать приложения крайне нестабильными и ненадежными. Вот где в игру вступает наблюдаемость LLM. Phoneix от ArizeAI позволяет удобно отслеживать весь ход выполнения LLM.

Это платформа наблюдения ИИ с открытым исходным кодом, разработанная для экспериментов, оценки и устранения неполадок. Она обеспечивает:

  • Трассировка — отслеживайте время выполнения вашего приложения LLM с помощью инструментария на основе OpenTelemetry.
  • Оценка — используйте LLM для оценки производительности вашего приложения с помощью оценок отклика и поиска.
  • Наборы данных — создание версионных наборов данных примеров для экспериментов, оценки и точной настройки.
  • Эксперименты — отслеживайте и оценивайте подсказки, LLM и изменения в поиске.

Phoenix не зависит от поставщика и языка и поддерживает такие фреймворки, как LlamaIndex, LangChain, DSPy, а также поставщиков LLM, таких как OpenAI и Bedrock.

Его можно запускать в различных средах, включая блокноты Jupyter, локальные машины, контейнеры или облако.

Начать работу с Phoneix легко:

pip install arize-phoenix

Для начала запустите приложение Phoenix:

import phoenix as px
session = px.launch_app()

Это запустит сервер Phoneix.

Теперь вы можете настроить отслеживание для своего ИИ-приложения, чтобы отлаживать его по мере поступления трассировок.

Чтобы использовать 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-адрес браузера.

Дополнительные примеры трассировки, управления версиями наборов данных и оценки смотрите в документации.

7. Airbyte: Надежный и расширяемый конвейер данных

Данные необходимы для создания приложений ИИ, особенно в производстве, где необходимо управлять большими объемами данных из различных источников. Airbyte в этом преуспевает.

Airbyte предлагает обширный каталог из более чем 300 коннекторов для API, баз данных, хранилищ данных и озер данных.

Airbyte также имеет расширение Python под названием PyAirByte. Это расширение поддерживает популярные фреймворки, такие как LangChain и LlamaIndex, что упрощает перемещение данных из нескольких источников в ваши приложения GenAI.

Подробную информацию о реализации PyAirByte с LangChain можно найти в этом блокноте.

Более подробную информацию можно найти в документации.

8. AgentOps: Мониторинг и наблюдаемость

Как и традиционные программные системы, ИИ требуют постоянного мониторинга и наблюдения. Это важно для того, чтобы поведение не отклонялось от ожиданий.

AgentOps предлагает комплексное решение для мониторинга и наблюдения за ИИ.

Он предлагает инструменты для анализа воспроизведения, управления затратами 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 — это фреймворк, разработанный для решения этой проблемы. Он помогает вам оценить ваши конвейеры Retrieval Augmented Generation (RAG).

Он помогает вам создавать синтетические тестовые наборы, тестировать на их основе конвейеры RAG и контролировать работу вашего приложения RAG.

Ознакомьтесь с документацией, чтобы понять, как использовать RAGAS для улучшения новых и существующих трубопроводов RAG.

Источник:

#Python #Подборка
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу