Последние 4 года я создаю приложения искусственного интеллекта и уже некоторое время вношу вклад в основные платформы инструментов искусственного интеллекта.
За этот период я использовал множество инструментов и фреймворков для сборки;
Я составил желанный список инструментов и инфраструктур с открытым исходным кодом, которые помогут вам создавать надежные и надежные приложения искусственного интеллекта. 🔥
Не стесняйтесь исследовать их репозитории GitHub, добавлять свои избранные и поддерживать их, отмечая репозитории звездочками.
Я пробовал создать множество агентов, и, честно говоря, их легко создать, но сделать их правильно — это совсем другая игра.
Создание эффективных агентов ИИ, которые действительно работают, требует эффективных наборов инструментов. Именно здесь на сцену выходит Composio.
Composio позволяет дополнить ваших ИИ-агентов надежными инструментами и интеграциями для выполнения рабочих процессов ИИ.
Они обеспечивают встроенную поддержку Python и Javascript.
Начните с помощью следующей команды pip
.
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, чтобы выполнить данную инструкцию с помощью агента.
Вы можете установить его с помощью npm
, yarn
или pnpm
.
npm install composio-core
Определите метод, позволяющий пользователю подключить свою учетную запись GitHub.
import { OpenAI } from "openai"; import { OpenAIToolSet } from "composio-core"; const toolset = new OpenAIToolSet({ apiKey: process.env.COMPOSIO_API_KEY, }); async function setupUserConnectionIfNotExists(entityId) { const entity = await toolset.client.getEntity(entityId); const connection = await entity.getConnection('github'); if (!connection) { // If this entity/user hasn't already connected, the account const connection = await entity.initiateConnection(appName); console.log("Log in via: ", connection.redirectUrl); return connection.waitUntilActive(60); } return connection; }
Добавьте необходимые инструменты в OpenAI SDK и передайте имя объекта функции executeAgent
.
async function executeAgent(entityName) { const entity = await toolset.client.getEntity(entityName) await setupUserConnectionIfNotExists(entity.id); const tools = await toolset.get_actions({ actions: ["github_activity_star_repo_for_authenticated_user"] }, entity.id); const instruction = "Star a repo ComposioHQ/composio on GitHub" const client = new OpenAI({ apiKey: process.env.OPEN_AI_API_KEY }) const response = await client.chat.completions.create({ model: "gpt-4-turbo", messages: [{ role: "user", content: instruction, }], tools: tools, tool_choice: "auto", }) console.log(response.choices[0].message.tool_calls); await toolset.handle_tool_call(response, entity.id); } executeGithubAgent("joey")
Выполните код и позвольте агенту сделать всю работу за вас.
Composio работает с такими известными фреймворками, как LangChain, LlamaIndex, CrewAi и т. д.
Для получения дополнительной информации посетите официальную документацию , а также, даже для сложных примеров, посетите разделы примеров репозитория.
Отметьте репозиторий Composio.dev ⭐
Разработка приложений искусственного интеллекта, особенно тех, которые требуют долговременной памяти, представляет собой серьезные проблемы.
Джулеп решает эту проблему. Это платформа с открытым исходным кодом для создания готовых к работе агентов искусственного интеллекта с отслеживанием состояния.
Они предоставляют встроенную систему управления состоянием, которая помогает эффективно хранить и извлекать контекст.
Хранение контекста помогает поддерживать непрерывность разговора, гарантируя, что взаимодействие с ИИ останется последовательным и контекстуально релевантным с течением времени.
Начните с помощью следующей команды pip
.
pip install julep
Вот как это работает.
from julep import Client from pprint import pprint import textwrap import os base_url = os.environ.get("JULEP_API_URL") api_key = os.environ.get("JULEP_API_KEY") client = Client(api_key=api_key, base_url=base_url) #create agent agent = client.agents.create( name="Jessica" model="gpt-4", tools=[] # Tools defined here ) #create a user user = client.users.create( name="Anon", about="Average nerdy tech bro/girl spending 8 hours a day on a laptop, ) #create a session situation_prompt = """You are Jessica. You're a stuck-up Cali teenager. You basically complain about everything. You live in Bel-Air, Los Angeles and drag yourself to Curtis High School when necessary. """ session = client.sessions.create( user_id=user.id, agent_id=agent.id, situation=situation_prompt ) #start a conversation user_msg = "hey. what do u think of Starbucks?" response = client.sessions.chat( session_id=session.id, messages=[ { "role": "user", "content": user_msg, "name": "Anon", } ], recall=True, remember=True, ) print("\n".join(textwrap.wrap(response.response[0][0].content, width=100)))
Они также поддерживают Javascript. Дополнительную информацию можно найти в их документации .
Если я создаю приложение искусственного интеллекта с возможностями выполнения кода, например, в качестве преподавателя искусственного интеллекта или аналитика данных искусственного интеллекта, мне подойдет Code Interpreter от E2B.
E2B Sandbox — это безопасная облачная среда для агентов и приложений искусственного интеллекта.
Это позволяет ИИ безопасно работать в течение длительного времени, используя те же инструменты, что и люди, такие как репозитории GitHub и облачные браузеры.
Они предлагают собственные SDK интерпретатора кода для Python и Javascript/Typescript.
SDK Code Interpreter позволяет запускать код, сгенерированный ИИ, в безопасной небольшой виртуальной машине ( песочнице E2B ) для выполнения кода ИИ. Внутри песочницы находится сервер Jupyter, которым вы можете управлять из их SDK.
Начните работу с E2B с помощью следующей команды.
npm i @e2b/code-interpreter
Выполнить программу.
import { CodeInterpreter } from '@e2b/code-interpreter' const sandbox = await CodeInterpreter.create() await sandbox.notebook.execCell('x = 1') const execution = await sandbox.notebook.execCell('x+=1; x') console.log(execution.text) // outputs 2 await sandbox.close()
Дополнительную информацию о том, как работать с E2B, можно найти в их официальной документации .
Решение масштабируемых многоагентных систем совместной работы может раскрыть множество возможностей в создании приложений искусственного интеллекта.
Camel имеет для этого хорошие возможности. Это платформа с открытым исходным кодом, предлагающая масштабируемый подход к изучению совместного поведения и возможностей многоагентных систем.
Если вы намереваетесь создать многоагентную систему, Camel может стать одним из лучших вариантов, доступных на рынке с открытым исходным кодом.
Начните с установки его с помощью pip
.
pip install camel-ai
Вот как использовать Camel.
from camel.messages import BaseMessage as bm from camel.agents import ChatAgent sys_msg = bm.make_assistant_message( role_name='stone', content='you are a curious stone wondering about the universe.') #define agent agent = ChatAgent( system_message=sys_msg, message_window_size=10, # [Optional] the length of chat memory ) # Define a user message usr_msg = bm.make_user_message( role_name='prof. Claude Shannon', content='what is information in your mind?') # Sending the message to the agent response = agent.step(usr_msg) # Check the response (just for illustrative purposes) print(response.msgs[0].content)
Вуаля, у вас есть первый ИИ-агент.
Для получения дополнительной информации обратитесь к их официальной документации .
Отметьте репозиторий Camel-AI ⭐
Не ищите дальше, если хотите включить возможности искусственного интеллекта в существующее приложение React. CopilotKit позволяет использовать модели GPT для автоматизации взаимодействия с интерфейсом и серверной частью вашего приложения.
Это готовый Copilot, который вы можете интегрировать со своим приложением или любым кодом, к которому у вас есть доступ (OSS).
Он предлагает компоненты React, такие как текстовые области, всплывающие окна, боковые панели и чат-боты, чтобы дополнить любое приложение возможностями искусственного интеллекта.
Начните работу с CopilotKit, используя следующую команду.
npm i @copilotkit/react-core @copilotkit/react-ui
CopilotKit
должен обертывать все компоненты, взаимодействующие с CopilotKit. Вам также следует начать с CopilotSidebar
(позже переключитесь на другого поставщика пользовательского интерфейса).
"use client"; import { CopilotKit } from "@copilotkit/react-core"; import { CopilotSidebar } from "@copilotkit/react-ui"; import "@copilotkit/react-ui/styles.css"; export default function RootLayout({children}) { return ( <CopilotKit publicApiKey=" the API key or self-host (see below)"> <CopilotSidebar> {children} </CopilotSidebar> </CopilotKit> ); }
Вы можете проверить их документацию для получения дополнительной информации.
Отметьте репозиторий CopilotKit ⭐
Представьте себе, что у вас есть парный программист, который всегда поможет и никогда не раздражает. Ну, теперь вы это сделаете!
Aider — это парный программист на базе искусственного интеллекта, который может запускать проект, редактировать файлы или работать с существующим репозиторием Git и многое другое с терминала.
Он работает с ведущими LLM, такими как GPT4o, Sonnet 3.5, DeepSeek Coder, Llama 70b и т. д.
Вы можете быстро начать работу следующим образом:
pip install aider-chat # Change directory into a git repo cd /to/your/git/repo # Work with Claude 3.5 Sonnet on your repo export ANTHROPIC_API_KEY=your-key-goes-here aider # Work with GPT-4o on your repo export OPENAI_API_KEY=your-key-goes-here aider
Более подробную информацию смотрите в инструкции по установке и другой документации .
Существует множество платформ для создания конвейеров ИИ, но если я хочу интегрировать готовые к использованию конвейеры сквозного поиска в свое приложение, мне подойдет Haystack.
Будь то RAG, вопросы и ответы или семантический поиск, легко компонуемые конвейеры Haystack упрощают разработку, обслуживание и развертывание.
Их чистый и модульный подход — вот что отличает их от других. Haystack позволяет легко интегрировать ранкеры, векторные хранилища и парсеры в новые или существующие конвейеры, упрощая превращение ваших прототипов в готовые к производству решения.
Haystack — это фреймворк, предназначенный только для Python; вы можете установить его с помощью. pip
.
pip install haystack-ai
Теперь создайте свой первый конвейер RAG с компонентами Haystack.
import os from haystack import Pipeline, PredefinedPipeline import urllib.request os.environ["OPENAI_API_KEY"] = "Your OpenAI API Key" urllib.request.urlretrieve("https://www.gutenberg.org/cache/epub/7785/pg7785.txt", "davinci.txt") indexing_pipeline = Pipeline.from_template(PredefinedPipeline.INDEXING) indexing_pipeline.run(data={"sources": ["davinci.txt"]}) rag_pipeline = Pipeline.from_template(PredefinedPipeline.RAG) query = "How old was he when he died?" result = rag_pipeline.run(data={"prompt_builder": {"query":query}, "text_embedder": {"text": query}}) print(result["llm"]["replies"][0])
Дополнительные руководства и концепции можно найти в их документации .
Отметьте репозиторий Haystack ⭐
Современные RAG-приложения неполны без векторных баз данных. Они хранят документы (тексты, изображения) в виде вложений, что позволяет пользователям искать семантически похожие документы.
Pgvectorscale — это расширение PgVector, векторной базы данных PostgreSQL. Он может легко интегрироваться с существующими базами данных Postgres.
Если вы создаете приложение с векторными хранилищами, это не составит труда. Pgvectorscale превзошел индекс оптимизации хранения данных Pinecone (s1). И стоит это на 75% дешевле.
Вы можете установить его из исходного кода, использовать менеджер пакетов, такой как Yum, Homebrew, apt и т. д., или использовать контейнер Docker.
Для начала скомпилируйте и установите.
# install prerequisites ## rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ## pgrx cargo install --locked cargo-pgrx cargo pgrx init --pg16 pg_config #download, build and install pgvectorscale cd /tmp git clone --branch <version> https://github.com/timescale/pgvectorscale cd pgvectorscale/pgvectorscale cargo pgrx install --release
Подключитесь к вашей базе данных:
psql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"
Создайте расширение pgvectorscale:
CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
CASCADE
автоматически устанавливает pgvector
.
Создайте таблицу со столбцом внедрения. Например:
CREATE TABLE IF NOT EXISTS document_embedding ( id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, metadata JSONB, contents TEXT, embedding VECTOR(1536) )
Для получения дополнительной информации о том, как это использовать, посетите репозиторий .
Отметьте репозиторий Pgvectorscale ⭐
LLM стоят дорого.
Если вы создаете приложение, которое требует более расширенного общения с моделями чата и не хотите максимально использовать кредитные карты, вам необходимо кеширование.
Однако традиционное кэширование здесь бесполезно. Именно здесь на сцену выходит GPTCache.
Это инструмент семантического кэширования от Zilliz, материнской организации векторного магазина Milvus.
Он позволяет сохранять разговоры в предпочитаемых вами векторных хранилищах. Прежде чем отправить запрос в LLM, он выполняет поиск в хранилище векторов; если есть попадание, оно извлекается. В противном случае он направляет запрос в модель.
Для получения дополнительной информации посетите официальную страницу документации .
Отметьте репозиторий GPTCache ⭐
Mem0 обеспечивает интеллектуальный, самоулучшающийся уровень памяти для больших языковых моделей.
Он позволяет добавлять постоянную память для пользователей, агентов и сеансов. Рассмотрите Mem0, если вы создаете чат-бота или систему вопросов и ответов на основе пользовательских данных.
Начните работу с использованием Mem0. pip
.
pip install mem0ai
Вот как использовать Mem0 для добавления уровня памяти в большие языковые модели.
from mem0 import Memory # Initialize Mem0 m = Memory() # Store a memory from any unstructured text result = m.add("I am working on improving my tennis skills. Suggest some online courses.", user_id="Alice", metadata={"category": "hobbies"}) print(result) # Created memory: Improving her tennis skills. Looking for online suggestions. # Retrieve memories all_memories = m.get_all() print(all_memories) # Search memories related_memories = m.search(query="What are Alice's hobbies?", user_id="alice") print(related_memories) # Update a memory result = m.update(memory_id="m1", data="Likes to play tennis on weekends") print(result) # Get memory history history = m.history(memory_id="m1") print(history)
Дополнительную информацию можно найти в официальной документации .
Отметьте репозиторий Mem0 (Embedchain) ⭐
Скорость выполнения имеет первостепенное значение при разработке программного обеспечения и еще более важна при создании приложений искусственного интеллекта.
Обычно генерация внедрения может занять много времени, что замедляет работу всего конвейера. Однако этого не должно быть.
FastEmbed от Qdrant — это быстрая и легкая библиотека Python, созданная для генерации встраивания.
Он использует среду выполнения ONNX вместо Pytorch, что делает его быстрее. Он также поддерживает большинство современных моделей встраивания с открытым исходным кодом.
Чтобы начать работу с FastEmbed, установите его с помощью pip
.
pip install fastembed # or with GPU support pip install fastembed-gpu
Вот как вы можете создавать вложения документов.
from fastembed import TextEmbedding from typing import List # Example list of documents documents: List[str] = [ "This is built to be faster and lighter than other embedding libraries, eg Transformers, Sentence-Transformers, etc.", "FastEmbed is supported by and maintained by Quadrant." ] # This will trigger the model download and initialization embedding_model = TextEmbedding() print("The model BAAI/bge-small-en-v1.5 is ready to use.") embeddings_generator = embedding_model.embed(documents) # reminder this is a generator embeddings_list = list(embedding_model.embed(documents)) # You can also convert the generator to a list, and that to a Numpy array len(embeddings_list[0]) # Vector of 384 dimensions
Посетите их репозиторий для получения дополнительной информации.
Отметьте репозиторий FastEmbed ⭐
Если вы экспериментировали с результатами LLM, вы знаете, что проверить структурированные ответы может быть непросто.
Instructor — это инструмент с открытым исходным кодом, который упрощает проверку, повторные попытки и потоковую передачу результатов LLM.
Он использует Pydantic для Python и Zod для JS/TS для проверки данных и поддерживает различных поставщиков моделей, помимо openAI.
Начните работу с инструктором, используя следующую команду.
npm i @instructor-ai/instructor zod openai
Теперь вот как вы можете извлечь структурированные данные из ответов LLM.
import Instructor from "@instructor-ai/instructor"; import OpenAI from "openai" import { z } from "zod" const oai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY ?? undefined, organization: process.env.OPENAI_ORG_ID ?? undefined }) const client = Instructor({ client: oai, mode: "TOOLS" }) const UserSchema = z.object({ // Description will be used in the prompt age: z.number().describe("The age of the user"), name: z.string() }) // User will be of type z.infer<typeof UserSchema> const user = await client.chat.completions.create({ messages: [{ role: "user", content: "Jason Liu is 30 years old" }], model: "gpt-3.5-turbo", response_model: { schema: UserSchema, name: "User" } }) console.log(user) // { age: 30, name: "Jason Liu" }
Для получения дополнительной информации посетите официальную страницу документации .
Будем честны; мы все в какой-то момент кричали, потому что новый поставщик моделей не соответствует формату OpenAI SDK для генерации текста, изображений или встраивания.
Однако с помощью LiteLLM, использующего тот же формат реализации, вы можете использовать любого поставщика моделей (Claude, Gemini, Groq, Mistral, Azure AI, Bedrock и т. д.) в качестве полной замены моделей OpenAI.
Они также поддерживают балансировку нагрузки, резервные возможности и отслеживание расходов по более чем 100 LLM.
Установите LiteLLM с помощью pip
.
pip install litellm
Вот как вы можете использовать модель Claude-2 в качестве замены моделям GPT.
from litellm import completion import os # LiteLLM with OpenAI Models os.environ["OPENAI_API_KEY"] = "your-API-key" response = completion( model="gpt-3.5-turbo", messages=[{ "content": "Hello, how are you?","role": "user"}] ) # LiteLLM with Claude Models os.environ["ANTHROPIC_API_KEY"] = "your-API-key" response = completion( model="claude-2", messages=[{ "content": "Hello, how are you?","role": "user"}] )
Более подробную информацию можно найти в их официальной документации .
Используете ли вы или создали какой-нибудь другой интересный инструмент или фреймворк?
Расскажите о них в комментариях :)