Tôi đã xây dựng các ứng dụng AI trong 4 năm qua và đóng góp cho các nền tảng công cụ AI lớn được một thời gian.
Trong thời gian này, tôi đã sử dụng nhiều công cụ và khuôn khổ để xây dựng;
Tôi đã tuyển chọn một danh sách các công cụ và khung công tác nguồn mở đáng thèm muốn sẽ giúp bạn tạo ra các ứng dụng AI mạnh mẽ và đáng tin cậy. 🔥
Hãy thoải mái khám phá kho lưu trữ GitHub của họ, đóng góp cho các mục yêu thích của bạn và hỗ trợ chúng bằng cách gắn dấu sao cho các kho lưu trữ.
Tôi đã thử xây dựng nhiều đặc vụ, và thành thật mà nói, mặc dù việc tạo ra chúng rất dễ dàng nhưng để làm cho đúng thì lại là một trò chơi hoàn toàn khác.
Xây dựng các tác nhân AI hiệu quả thực sự hoạt động đòi hỏi phải có bộ công cụ hiệu quả. Đây là lúc Composio xuất hiện.
Composio cho phép bạn tăng cường các tác nhân AI của mình bằng các công cụ và tiện ích tích hợp mạnh mẽ để hoàn thành quy trình công việc AI.
Họ cung cấp hỗ trợ riêng cho Python và Javascript.
Bắt đầu với lệnh pip
sau.
pip install composio-core
Thêm tích hợp GitHub.
composio add github
Composio thay mặt bạn xử lý việc xác thực và ủy quyền người dùng. Đây là cách bạn có thể sử dụng tích hợp GitHub để khởi động một kho lưu trữ.
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} ] )
Chạy tập lệnh Python này để thực thi lệnh đã cho bằng cách sử dụng tác nhân.
Bạn có thể cài đặt nó bằng cách sử dụng npm
, yarn
hoặc pnpm
.
npm install composio-core
Xác định phương thức cho phép người dùng kết nối tài khoản GitHub của họ.
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; }
Thêm các công cụ cần thiết vào OpenAI SDK và chuyển tên thực thể cho hàm 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")
Thực thi mã và để đại lý thực hiện công việc cho bạn.
Composio hoạt động với các framework nổi tiếng như LangChain, LlamaIndex, CrewAi, v.v.
Để biết thêm thông tin, hãy truy cập tài liệu chính thức và thậm chí đối với các ví dụ phức tạp, hãy truy cập các phần ví dụ của kho lưu trữ.
Gắn dấu sao cho kho Composio.dev ⭐
Việc phát triển các ứng dụng AI, đặc biệt là những ứng dụng đòi hỏi trí nhớ dài hạn, đặt ra những thách thức đáng kể.
Julep đang giải quyết vấn đề này. Nó là một khung nguồn mở để xây dựng các tác nhân AI có trạng thái sẵn sàng sản xuất.
Họ cung cấp một hệ thống quản lý trạng thái tích hợp giúp lưu trữ và truy xuất ngữ cảnh hiệu quả.
Lưu trữ ngữ cảnh giúp duy trì tính liên tục của cuộc trò chuyện, đảm bảo rằng các tương tác với AI vẫn mạch lạc và phù hợp với ngữ cảnh theo thời gian.
Bắt đầu với lệnh pip
sau.
pip install julep
Đây là cách nó làm việc.
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)))
Họ cũng hỗ trợ Javascript. Kiểm tra tài liệu của họ để biết thêm.
Gắn dấu sao cho kho lưu trữ Julep ⭐
Nếu tôi đang xây dựng một ứng dụng AI có khả năng thực thi mã, chẳng hạn như gia sư AI hoặc nhà phân tích dữ liệu AI, thì Trình thông dịch mã của E2B sẽ là công cụ tôi sử dụng.
E2B Sandbox là môi trường đám mây an toàn cho các tác nhân và ứng dụng AI.
Nó cho phép AI chạy an toàn trong thời gian dài, sử dụng các công cụ giống như con người, chẳng hạn như kho GitHub và trình duyệt đám mây.
Họ cung cấp SDK trình thông dịch mã gốc cho Python và Javascript/Typescript.
SDK Trình thông dịch mã cho phép bạn chạy mã do AI tạo trong một VM nhỏ an toàn - hộp cát E2B - để thực thi mã AI. Bên trong hộp cát là máy chủ Jupyter mà bạn có thể điều khiển từ SDK của họ.
Bắt đầu với E2B bằng lệnh sau.
npm i @e2b/code-interpreter
Thực hiện một chương trình.
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()
Để biết thêm về cách làm việc với E2B, hãy truy cập tài liệu chính thức của họ.
Gắn dấu sao cho kho lưu trữ E2B ⭐
Việc giải quyết các hệ thống cộng tác đa tác nhân có thể mở rộng có thể mở ra nhiều tiềm năng trong việc xây dựng các ứng dụng AI.
Camel có vị trí tốt cho việc này. Đây là một khung nguồn mở cung cấp cách tiếp cận có thể mở rộng để nghiên cứu các hành vi và khả năng hợp tác của hệ thống đa tác nhân.
Nếu bạn có ý định xây dựng một hệ thống đa tác nhân, Camel có thể là một trong những lựa chọn tốt nhất hiện có trong bối cảnh nguồn mở.
Bắt đầu bằng cách cài đặt nó với pip
.
pip install camel-ai
Đây là cách sử dụng 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)
Thì đấy, bạn đã có tác nhân AI đầu tiên của mình.
Để biết thêm thông tin, hãy tham khảo tài liệu chính thức của họ.
Gắn dấu sao cho kho lưu trữ lạc đà-ai ⭐
Đừng tìm đâu xa nếu bạn muốn đưa các khả năng AI vào ứng dụng React hiện có của mình. CopilotKit cho phép bạn sử dụng các mô hình GPT để tự động tương tác với mặt trước và mặt sau của ứng dụng.
Đó là một Copilot được tạo sẵn mà bạn có thể tích hợp với ứng dụng của mình hoặc bất kỳ mã nào bạn có thể truy cập (OSS).
Nó cung cấp các thành phần React như vùng văn bản, cửa sổ bật lên, thanh bên và chatbot để tăng cường bất kỳ ứng dụng nào có khả năng AI.
Bắt đầu với CopilotKit bằng lệnh sau.
npm i @copilotkit/react-core @copilotkit/react-ui
CopilotKit
phải bao bọc tất cả các thành phần tương tác với CopilotKit. Bạn cũng nên bắt đầu với CopilotSidebar
(sau này chuyển sang nhà cung cấp giao diện người dùng khác).
"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> ); }
Bạn có thể kiểm tra tài liệu của họ để biết thêm thông tin.
Gắn dấu sao cho kho lưu trữ CopilotKit ⭐
Hãy tưởng tượng có một cặp lập trình viên luôn hữu ích và không bao giờ gây khó chịu. Vâng, bây giờ bạn làm được!
Aider là một lập trình viên cặp được hỗ trợ bởi AI, có thể bắt đầu một dự án, chỉnh sửa tệp hoặc làm việc với kho lưu trữ Git hiện có và hơn thế nữa từ thiết bị đầu cuối.
Nó hoạt động với các LLM hàng đầu như GPT4o, Sonnet 3.5, DeepSeek Coder, Llama 70b, v.v.
Bạn có thể bắt đầu nhanh chóng như thế này:
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
Để biết thêm chi tiết, hãy xem hướng dẫn cài đặt và tài liệu khác.
Gắn dấu sao cho kho lưu trữ Aider ⭐
Có rất nhiều khung để xây dựng quy trình AI, nhưng nếu tôi muốn tích hợp các quy trình tìm kiếm từ đầu đến cuối sẵn sàng sản xuất vào ứng dụng của mình thì Haystack là lựa chọn phù hợp của tôi.
Cho dù đó là RAG, Hỏi & Đáp hay tìm kiếm ngữ nghĩa, các quy trình có khả năng kết hợp cao của Haystack giúp việc phát triển, bảo trì và triển khai trở nên dễ dàng.
Cách tiếp cận gọn gàng và theo mô-đun là điều khiến họ trở nên khác biệt. Haystack cho phép bạn dễ dàng tích hợp các trình xếp hạng, kho vectơ và trình phân tích cú pháp vào các quy trình mới hoặc hiện có, giúp bạn dễ dàng biến các nguyên mẫu của mình thành các giải pháp sẵn sàng cho sản xuất.
Haystack là một framework chỉ dành cho Python; bạn có thể cài đặt nó bằng cách sử dụng . pip
.
pip install haystack-ai
Bây giờ, hãy xây dựng Đường ống RAG đầu tiên của bạn với các thành phần 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])
Để biết thêm hướng dẫn và khái niệm, hãy xem tài liệu của họ.
Gắn dấu sao cho kho lưu trữ Haystack ⭐
Các ứng dụng RAG hiện đại sẽ không đầy đủ nếu không có cơ sở dữ liệu vector. Những tài liệu này lưu trữ (văn bản, hình ảnh) dưới dạng phần nhúng, cho phép người dùng tìm kiếm các tài liệu tương tự về mặt ngữ nghĩa.
PGvectorscale là phần mở rộng của PGVector, cơ sở dữ liệu vectơ từ PostgreSQL. Nó có thể tích hợp liền mạch với cơ sở dữ liệu Postgres hiện có.
Nếu bạn đang xây dựng một ứng dụng có cửa hàng vector thì đây là điều không cần bàn cãi. PGvectorscale đã vượt trội hơn chỉ số tối ưu hóa lưu trữ của Pinecone (s1). Và nó có giá thấp hơn 75%.
Bạn có thể cài đặt nó từ nguồn, sử dụng trình quản lý gói như Yum, Homebrew, apt, v.v. hoặc sử dụng bộ chứa Docker.
Để bắt đầu với nó, hãy biên dịch và cài đặt.
# 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
Kết nối với cơ sở dữ liệu của bạn:
psql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"
Tạo phần mở rộng pgvectorscale:
CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
CASCADE
tự động cài đặt pgvector
.
Tạo một bảng có cột nhúng. Ví dụ:
CREATE TABLE IF NOT EXISTS document_embedding ( id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, metadata JSONB, contents TEXT, embedding VECTOR(1536) )
Để biết thêm thông tin về cách sử dụng tính năng này, hãy xem kho lưu trữ .
Gắn dấu sao cho kho lưu trữ PGvectorscale ⭐
LLM đắt tiền.
Nếu bạn đang xây dựng một ứng dụng yêu cầu nhiều cuộc trò chuyện mở rộng hơn với các mô hình trò chuyện và không muốn sử dụng tối đa thẻ tín dụng, bạn cần có bộ nhớ đệm.
Tuy nhiên, bộ nhớ đệm truyền thống không được sử dụng ở đây. Đây là lúc GPTCache xuất hiện.
Nó là một công cụ lưu trữ ngữ nghĩa của Zilliz, tổ chức mẹ của kho lưu trữ vectơ Milvus.
Nó cho phép bạn lưu trữ các cuộc hội thoại trong kho vector ưa thích của bạn. Trước khi gửi truy vấn đến LLM, nó sẽ tìm kiếm trong kho vectơ; nếu có một cú đánh, nó sẽ lấy nó. Nếu không, nó sẽ định tuyến yêu cầu đến mô hình.
Để biết thêm thông tin, hãy truy cập trang tài liệu chính thức.
Gắn dấu sao cho kho lưu trữ GPTCache ⭐
Mem0 cung cấp lớp bộ nhớ thông minh, tự cải thiện cho các Mô hình Ngôn ngữ Lớn.
Nó cho phép bạn thêm bộ nhớ liên tục cho người dùng, tác nhân và phiên. Hãy xem xét Mem0 nếu bạn đang xây dựng một chatbot hoặc hệ thống hỏi đáp trên dữ liệu tùy chỉnh.
Bắt đầu với Mem0 bằng cách sử dụng. pip
.
pip install mem0ai
Dưới đây là cách sử dụng Mem0 để thêm lớp bộ nhớ vào Mô hình ngôn ngữ lớn.
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)
Tham khảo tài liệu chính thức để biết thêm.
Gắn dấu sao cho kho lưu trữ Mem0 (Embedchain) ⭐
Tốc độ thực thi là điều tối quan trọng trong phát triển phần mềm và nó thậm chí còn quan trọng hơn khi xây dựng một ứng dụng AI.
Thông thường, quá trình tạo nhúng có thể mất nhiều thời gian, làm chậm toàn bộ đường ống. Tuy nhiên, điều này không nên xảy ra.
FastEmbed từ Qdrant là một thư viện Python nhanh, nhẹ được xây dựng để tạo nhúng.
Nó sử dụng thời gian chạy ONNX thay vì Pytorch, làm cho nó nhanh hơn. Nó cũng hỗ trợ hầu hết các mô hình nhúng nguồn mở tiên tiến nhất.
Để bắt đầu với FastEmbed, hãy cài đặt nó bằng pip
.
pip install fastembed # or with GPU support pip install fastembed-gpu
Đây là cách bạn có thể tạo phần nhúng của tài liệu.
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
Kiểm tra kho lưu trữ của họ để biết thêm thông tin.
Gắn dấu sao cho kho lưu trữ FastEmbed ⭐
Nếu bạn đã từng thử nghiệm với kết quả đầu ra LLM, bạn biết rằng việc xác thực các phản hồi có cấu trúc có thể gặp khó khăn.
Người hướng dẫn là một công cụ nguồn mở giúp hợp lý hóa việc xác thực, thử lại và truyền phát các kết quả đầu ra LLM.
Nó sử dụng Pydantic cho Python và Zod cho JS/TS để xác thực dữ liệu và hỗ trợ các nhà cung cấp mô hình khác nhau ngoài openAI.
Bắt đầu với Người hướng dẫn bằng lệnh sau.
npm i @instructor-ai/instructor zod openai
Bây giờ, đây là cách bạn có thể trích xuất dữ liệu có cấu trúc từ phản hồi 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" }
Để biết thêm thông tin, hãy truy cập trang tài liệu chính thức.
Ngôi sao của người hướng dẫn ⭐
Hãy Trung thực; tất cả chúng ta đều đã hét lên vào một lúc nào đó vì một nhà cung cấp mô hình mới không tuân theo định dạng OpenAI SDK để tạo văn bản, hình ảnh hoặc nhúng.
Tuy nhiên, với LiteLLM, sử dụng cùng một định dạng triển khai, bạn có thể sử dụng bất kỳ nhà cung cấp mô hình nào (Claude, Gemini, Groq, Mistral, Azure AI, Bedrock, v.v.) để thay thế cho các mô hình OpenAI.
Chúng cũng hỗ trợ cân bằng tải, dự phòng và theo dõi chi tiêu trên hơn 100 LLM.
Cài đặt LiteLLM bằng pip
.
pip install litellm
Đây là cách bạn có thể sử dụng mẫu Claude-2 để thay thế cho mẫu 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"}] )
Để biết thêm, hãy tham khảo tài liệu chính thức của họ.
Bạn có sử dụng hoặc đã xây dựng một số công cụ hoặc framework thú vị khác không?
Hãy cho tôi biết về họ trong phần bình luận :)