Tenho desenvolvido aplicativos de IA nos últimos 4 anos e contribuído para as principais plataformas de ferramentas de IA já há algum tempo.
Durante este período, usei muitas ferramentas e estruturas para construção;
Eu organizei uma lista cobiçada de ferramentas e estruturas de código aberto que ajudarão você a criar aplicativos de IA robustos e confiáveis. 🔥
Sinta-se à vontade para explorar seus repositórios GitHub, contribuir com seus favoritos e apoiá-los marcando os repositórios com estrela.
Tentei construir muitos agentes e, honestamente, embora seja fácil criá-los, é um jogo totalmente diferente acertá-los.
Construir agentes de IA eficientes que realmente funcionem requer conjuntos de ferramentas eficientes. É aqui que a Composio entra em cena.
O Composio permite que você amplie seus agentes de IA com ferramentas e integrações robustas para realizar fluxos de trabalho de IA.
Eles fornecem suporte nativo para Python e Javascript.
Comece com o seguinte comando pip
.
pip install composio-core
Adicione uma integração com GitHub.
composio add github
A Composio lida com a autenticação e autorização do usuário em seu nome. Veja como você pode usar a integração do GitHub para iniciar um repositório.
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} ] )
Execute este script Python para executar a instrução fornecida usando o agente.
Você pode instalá-lo usando npm
, yarn
ou pnpm
.
npm install composio-core
Defina um método para permitir que o usuário conecte sua conta 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; }
Adicione as ferramentas necessárias ao OpenAI SDK e passe o nome da entidade para a função 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")
Execute o código e deixe o agente fazer o trabalho para você.
Composio funciona com frameworks famosos como LangChain, LlamaIndex, CrewAi, etc.
Para mais informações, visite a documentação oficial e também, mesmo para exemplos complexos, visite as seções de exemplos do repositório.
Marque com estrela o repositório Composio.dev ⭐
O desenvolvimento de aplicações de IA, especialmente aquelas que requerem memória de longo prazo, apresenta desafios significativos.
Julep está resolvendo esse problema. É uma estrutura de código aberto para a construção de agentes de IA com estado prontos para produção.
Eles fornecem um sistema de gerenciamento de estado integrado que ajuda no armazenamento e recuperação eficiente de contexto.
O armazenamento de contexto ajuda a manter a continuidade da conversa, garantindo que as interações com a IA permaneçam coerentes e contextualmente relevantes ao longo do tempo.
Comece com o seguinte comando pip
.
pip install julep
Aqui está como funciona.
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)))
Eles também suportam Javascript. Confira a documentação para mais informações.
Marque o repositório Julep com estrela ⭐
Se eu estiver construindo um aplicativo de IA com recursos de execução de código, como um tutor de IA ou analista de dados de IA, o Code Interpreter da E2B será minha ferramenta preferida.
E2B Sandbox é um ambiente de nuvem seguro para agentes e aplicativos de IA.
Ele permite que a IA funcione com segurança por longos períodos, usando as mesmas ferramentas que os humanos, como repositórios GitHub e navegadores em nuvem.
Eles oferecem SDKs de intérpretes de código nativos para Python e Javascript/Typescript.
O Code Interpreter SDK permite que você execute código gerado por IA em uma pequena VM segura - sandbox E2B - para execução de código de IA. Dentro da sandbox há um servidor Jupyter que você pode controlar a partir do SDK.
Comece com E2B com o seguinte comando.
npm i @e2b/code-interpreter
Execute um programa.
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()
Para saber mais sobre como trabalhar com E2B, visite a documentação oficial.
A solução para sistemas colaborativos multiagentes escaláveis pode desbloquear muitos potenciais na construção de aplicações de IA.
Camel está bem posicionado para isso. É uma estrutura de código aberto que oferece uma abordagem escalável para estudar os comportamentos e capacidades cooperativas de sistemas multiagentes.
Se você pretende construir um sistema multiagente, o Camel pode ser uma das melhores opções disponíveis no cenário de código aberto.
Comece instalando-o com pip
.
pip install camel-ai
Aqui está como usar o 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)
Voila, você tem seu primeiro agente de IA.
Para obter mais informações, consulte a documentação oficial.
Marque o repositório camel-ai ⭐
Não procure mais se quiser incluir recursos de IA em seu aplicativo React existente. O CopilotKit permite usar modelos GPT para automatizar a interação com o front e back-end do seu aplicativo.
É um Copilot pronto que você pode integrar com sua aplicação ou qualquer código que você possa acessar (OSS).
Ele oferece componentes React como áreas de texto, pop-ups, barras laterais e chatbots para aprimorar qualquer aplicativo com recursos de IA.
Comece com o CopilotKit usando o seguinte comando.
npm i @copilotkit/react-core @copilotkit/react-ui
Um CopilotKit
deve agrupar todos os componentes que interagem com o CopilotKit. Você também deve começar com CopilotSidebar
(trocar para um provedor de UI diferente posteriormente).
"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> ); }
Você pode verificar a documentação para obter mais informações.
Marque o repositório CopilotKit com estrela ⭐
Imagine ter um programador par que é sempre útil e nunca chato. Bem, agora você faz!
Aider é um programador de pares com tecnologia de IA que pode iniciar um projeto, editar arquivos ou trabalhar com um repositório Git existente e muito mais a partir do terminal.
Funciona com LLMs líderes como GPT4o, Sonnet 3.5, DeepSeek Coder, Llama 70b, etc.
Você pode começar rapidamente assim:
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
Para obter mais detalhes, consulte as instruções de instalação e outras documentações .
Marque o repositório Aider com estrela ⭐
Existem muitas estruturas para construir pipelines de IA, mas se eu quiser integrar pipelines de pesquisa ponta a ponta prontos para produção em meu aplicativo, Haystack é minha escolha.
Quer se trate de RAG, perguntas e respostas ou pesquisas semânticas, os pipelines altamente combináveis do Haystack facilitam o desenvolvimento, a manutenção e a implantação.
Sua abordagem limpa e modular é o que os diferencia. Haystack permite integrar facilmente classificadores, armazenamentos de vetores e analisadores em pipelines novos ou existentes, facilitando a transformação de seus protótipos em soluções prontas para produção.
Haystack é uma estrutura somente Python; você pode instalá-lo usando. pip
.
pip install haystack-ai
Agora, construa seu primeiro RAG Pipeline com componentes 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])
Para mais tutoriais e conceitos, confira a documentação .
Marque o repositório Haystack com estrela ⭐
Os aplicativos RAG modernos ficam incompletos sem bancos de dados vetoriais. Estes armazenam documentos (textos, imagens) como embeddings, permitindo aos usuários pesquisar documentos semanticamente semelhantes.
Pgvectorscale é uma extensão do PgVector, um banco de dados vetorial do PostgreSQL. Ele pode ser perfeitamente integrado aos bancos de dados Postgres existentes.
Se você estiver construindo um aplicativo com lojas de vetores, isso é óbvio. Pgvectorscale superou o índice otimizado de armazenamento da Pinecone (s1). E custa 75% menos.
Você pode instalá-lo a partir do código-fonte, usar um gerenciador de pacotes como Yum, Homebrew, apt, etc., ou usar um contêiner Docker.
Para começar, compile e instale.
# 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
Conecte-se ao seu banco de dados:
psql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"
Crie a extensão pgvectorscale:
CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
O CASCADE
instala automaticamente pgvector
.
Crie uma tabela com uma coluna incorporada. Por exemplo:
CREATE TABLE IF NOT EXISTS document_embedding ( id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, metadata JSONB, contents TEXT, embedding VECTOR(1536) )
Para obter mais informações sobre como usar isso, verifique o repositório .
Marque o repositório Pgvectorscale com estrela ⭐
LLMs são caros.
Se você estiver criando um aplicativo que requer conversas mais extensas com modelos de chat e não deseja estourar o limite dos cartões de crédito, você precisa de cache.
No entanto, o cache tradicional não tem utilidade aqui. É aqui que o GPTCache entra em cena.
É uma ferramenta de cache semântico da Zilliz, a organização controladora do armazenamento de vetores Milvus.
Ele permite armazenar conversas em seus armazenamentos de vetores preferidos. Antes de enviar uma consulta ao LLM, ele pesquisa o armazenamento de vetores; se houver um hit, ele o busca. Caso contrário, ele encaminha a solicitação para o modelo.
Para mais informações, visite a página de documentação oficial.
Marque o repositório GPTCache com estrela ⭐
Mem0 fornece uma camada de memória inteligente e de autoaperfeiçoamento para modelos de linguagem grande.
Ele permite adicionar memória persistente para usuários, agentes e sessões. Considere o Mem0 se você estiver construindo um chatbot ou sistema de perguntas e respostas com base em dados personalizados.
Comece com Mem0 usando. pip
.
pip install mem0ai
Veja como usar Mem0 para adicionar uma camada de memória a modelos de linguagem grandes.
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)
Consulte a documentação oficial para mais informações.
Marque com estrela o repositório Mem0 (Embedchain) ⭐
A velocidade de execução é fundamental no desenvolvimento de software e é ainda mais importante na construção de um aplicativo de IA.
Normalmente, a geração de incorporação pode demorar muito, tornando todo o pipeline mais lento. No entanto, este não deveria ser o caso.
FastEmbed da Qdrant é uma biblioteca Python rápida e leve construída para geração de incorporação.
Ele usa o tempo de execução ONNX em vez do Pytorch, tornando-o mais rápido. Ele também oferece suporte à maioria dos modelos de incorporação de código aberto de última geração.
Para começar a usar o FastEmbed, instale-o usando pip
.
pip install fastembed # or with GPU support pip install fastembed-gpu
Veja como você pode criar os embeddings dos documentos.
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
Confira seu repositório para mais informações.
Marque o repositório FastEmbed com estrela ⭐
Se você já experimentou os resultados do LLM, sabe que pode ser um desafio validar respostas estruturadas.
Instructor é uma ferramenta de código aberto que agiliza a validação, nova tentativa e streaming de resultados do LLM.
Ele usa Pydantic para Python e Zod para JS/TS para validação de dados e oferece suporte a vários provedores de modelos além do openAI.
Comece com o instrutor usando o seguinte comando.
npm i @instructor-ai/instructor zod openai
Agora, aqui está como você pode extrair dados estruturados das respostas do 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" }
Para mais informações, visite a página de documentação oficial.
Sejamos honestos; todos nós gritamos em algum momento porque um novo provedor de modelo não segue o formato OpenAI SDK para geração de texto, imagem ou incorporação.
No entanto, com LiteLLM, usando o mesmo formato de implementação, você pode usar qualquer provedor de modelo (Claude, Gemini, Groq, Mistral, Azure AI, Bedrock, etc.) como um substituto imediato para modelos OpenAI.
Eles também oferecem suporte a balanceamento de carga, substitutos e rastreamento de gastos em mais de 100 LLMs.
Instale LiteLLM usando pip
.
pip install litellm
Veja como você pode usar o modelo Claude-2 como um substituto imediato para os modelos 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"}] )
Para mais informações, consulte a documentação oficial.
Você usa ou construiu alguma outra ferramenta ou estrutura interessante?
Deixe-me saber sobre eles nos comentários :)