Bli riktigt vass på AI med dessa open source bibliotek
Upptäck open-source bibliotek som tar din AI-utveckling till nästa nivå. Dessa verktyg erbjuder allt från förbättrad agentbyggnad och minneshantering till snabb vektordatabaslagring och semantisk caching. Perfekta för att skapa effektiva, skalbara och kostnadseffektiva AI-applikationer. Utforska dessa resurser och bli en AI-mästare.
Innehållsförteckning
Composio: Bygg tillförlitliga AI-agenter 10 gånger snabbare
Byggandet av effektiva AI-agenter kräver robusta verktyg, och här kommer Composio in i bilden. Composio erbjuder integrationer som förbättrar AI-arbetsflöden och stödjer både Python och Javascript.
Python: Installera med:
Copy codepip install composio-core
Lägg till en GitHub-integration:
csharpCopy codecomposio add github
Kodexempel för att stjärnmärka en GitHub-repository:
pythonCopy codefrom openai import OpenAI
from composio_openai import ComposioToolSet, App
openai_client = OpenAI(api_key="******OPENAIKEY******")
composio_toolset = ComposioToolSet(api_key="******COMPOSIO_API_KEY******")
actions = composio_toolset.get_actions(actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER])
my_task = "Star a repo ComposioHQ/composio on GitHub"
response = openai_client.chat.completions.create(
model="gpt-4-turbo",
tools=actions,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": my_task}
]
)
Javascript: Installera med npm:
Copy codenpm install composio-core
Kodexempel för att stjärnmärka en GitHub-repository:
javascriptCopy codeimport { OpenAI } from "openai";
import { OpenAIToolSet } from "composio-core";
const toolset = new OpenAIToolSet({
apiKey: process.env.COMPOSIO_API_KEY,
});
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")
Julep: Ramverk för att bygga tillståndsbaserade AI-agenter
Julep erbjuder ett ramverk för att bygga produktionsklara AI-agenter med långsiktig minneshantering.
Installera med:
Copy codepip install julep
Kodexempel:
pythonCopy codefrom julep import Client
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)
agent = client.agents.create(name="Jessica", model="gpt-4", tools=[])
user = client.users.create(name="Anon", about="Average nerdy tech bro/girl spending 8 hours a day on a laptop")
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)
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)))
E2B: Kodtolkning för AI-appar
E2B erbjuder en säker molnmiljö för AI-agenters kodkörning.
Installera med:
cssCopy codenpm i @e2b/code-interpreter
Kodexempel:
javascriptCopy codeimport { 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()
Camel-ai: Bygg kommunikativa AI-system
Camel erbjuder ett skalbart tillvägagångssätt för att studera samarbetsbeteenden i multi-agent system.
Installera med:
Copy codepip install camel-ai
Kodexempel:
pythonCopy codefrom 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.')
agent = ChatAgent(system_message=sys_msg, message_window_size=10)
usr_msg = bm.make_user_message(role_name='prof. Claude Shannon', content='what is information in your mind?')
response = agent.step(usr_msg)
print(response.msgs[0].content)
CopilotKit: Bygg AI-kopiloter för React-appar
CopilotKit låter användare inkludera AI-funktioner i sina befintliga React-applikationer.
Installera med:
bashCopy codenpm i @copilotkit/react-core @copilotkit/react-ui
Kodexempel:
javascriptCopy code"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>
);
}
Aider: AI-parprogrammerare
Aider är en AI-driven parprogrammerare som kan starta projekt, redigera filer eller arbeta med befintliga Git-repositories från terminalen.
Installera med:
Copy codepip install aider-chat
Kom igång:
shellCopy code# 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: Bygg komposabla RAG-pipelines
Haystack erbjuder ett modulärt tillvägagångssätt för att bygga produktionsklara sök-pipelines.
Installera med:
Copy codepip install haystack-ai
Kodexempel:
pythonCopy codeimport 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])
Pgvectorscale: Snabbaste vektordatabasen
Pgvectorscale är en förlängning av PgVector, en vektordatabas från PostgreSQL, som kan integreras sömlöst med befintliga Postgres-databaser.
Installera genom att kompilera och installera:
shellCopy code# 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
Anslut till databasen:
sqlCopy codepsql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"
CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
CREATE TABLE IF NOT EXISTS document_embedding (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
metadata JSONB,
contents TEXT,
embedding VECTOR(1536)
)
Mem0 (EmbedChain): Bygg personliga LLM-appar
Mem0 erbjuder ett smart minneslager för stora språkmodeller, vilket gör det möjligt att lägga till bestående minne för användare, agenter och sessioner.
Installera med:
Copy codepip install mem0ai
Kodexempel:
pythonCopy codefrom mem0 import Memory
# Initialisera Mem0
m = Memory()
# Spara ett minne från valfri ostrukturerad text
result = m.add("I am working on improving my tennis skills. Suggest some online courses.", user_id="Alice", metadata={"category": "hobbies"})
print(result)
# Skapat minne: Förbättra sina tenniskunskaper. Söker onlineförslag.
# Hämta minnen
all_memories = m.get_all()
print(all_memories)
# Sök minnen
related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
print(related_memories)
# Uppdatera ett minne
result = m.update(memory_id="m1", data="Likes to play tennis on weekends")
print(result)
# Hämta minneshistorik
history = m.history(memory_id="m1")
print(history)
FastEmbed: Snabbare inbäddning av dokument
FastEmbed från Qdrant är ett snabbt och lättviktigt Python-bibliotek för inbäddningsgenerering. Det använder ONNX runtime istället för Pytorch, vilket gör det snabbare.
Installera med:
arduinoCopy codepip install fastembed
# eller med GPU-stöd
pip install fastembed-gpu
Kodexempel:
pythonCopy codefrom fastembed import TextEmbedding
from typing import List
# Exempel på dokumentlista
documents: List[str] = [
"This is built to be faster and lighter than other embedding libraries, e.g. Transformers, Sentence-Transformers, etc.",
"FastEmbed is supported by and maintained by Qdrant."
]
# Detta triggar nedladdning och initialisering av modellen
embedding_model = TextEmbedding()
print("Modellen BAAI/bge-small-en-v1.5 är redo att användas.")
embeddings_generator = embedding_model.embed(documents) # påminnelse detta är en generator
embeddings_list = list(embedding_model.embed(documents))
len(embeddings_list[0]) # Vektor på 384 dimensioner
Instructor: Strukturerad dataextraktion från LLM
Instructor är ett verktyg som förenklar validering, omförsök och streaming av LLM-utdata. Det använder Pydantic för Python och Zod för JS/TS för datavalidering och stödjer flera modellleverantörer.
Installera med:
cssCopy codenpm i @instructor-ai/instructor zod openai
Kodexempel:
javascriptCopy codeimport 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({
// Beskrivning används i prompten
age: z.number().describe("The age of the user"),
name: z.string()
})
// User kommer att vara av typen 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" }
LiteLLM: Drop-in ersättning för LLM i OpenAI-format
LiteLLM låter dig använda valfri modellleverantör som en drop-in ersättning för OpenAI-modeller med samma implementationsformat.
Installera med:
Copy codepip install litellm
Kodexempel:
pythonCopy codefrom litellm import completion
import os# LiteLLM med OpenAI-modeller
os.environ["OPENAI_API_KEY"] = "your-API-key"response = completion(
model="gpt-3.5-turbo",
messages=[{ "content": "Hello, how are you?","role": "user"}]
)# LiteLLM med Claude-modeller
os.environ["ANTHROPIC_API_KEY"] = "your-API-key"response = completion(
model="claude-2",
messages=[{ "content": "Hello, how are you?","role": "user"}]
)
Kommentera: