Trong lĩnh vực trí tuệ nhân tạo (AI), việc sử dụng các thư viện mã nguồn mở là chìa khóa để tạo ra những ứng dụng mạnh mẽ và hiệu quả. Những công cụ này không chỉ giúp bạn tiết kiệm thời gian mà còn mở rộng khả năng của bạn trong việc phát triển và triển khai AI.

Bài viết dưới đây, VietnamWorks inTECH sẽ giới thiệu 13 thư viện Open-source hàng đầu mà bạn không thể bỏ qua nếu muốn nâng cao kỹ năng và thành công trong lĩnh vực AI. 

1. Composio 

Xây dựng các agent AI mạnh mẽ thực sự cần những bộ công cụ hiệu quả. Đây chính là lúc Composio phát huy tác dụng. Composio cho phép bạn mở rộng các agent AI của mình bằng các công cụ và tích hợp mạnh mẽ để hoàn thành các quy trình làm việc của AI. Công cụ này cung cấp hỗ trợ trực tiếp cho cả Python và Javascript.

Python

Bắt đầu bằng lệnh sau.

pip install composio-core

Thêm tích hợp GitHub.

composio add github

Composio sẽ xử lý việc xác thực và phân quyền người dùng thay cho bạn.

Dưới đây là cách bạn có thể sử dụng tích hợp GitHub để đánh dấu 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 đoạn mã Python này để thực hiện chỉ thị bằng cách sử dụng agent.

Javascript

Bạn có thể cài đặt bằng cách sử dụng npm, yarn, hoặc pnpm.

npm install composio-core

Xác định phương pháp 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à truyền tên thực thể (enity name) vào 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à để agent làm việc thay 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à để xem các ví dụ phức tạp hơn, hãy truy cập phần ví dụ của kho lưu trữ.

composio

2. Julep

Việc phát triển các ứng dụng AI, đặc biệt là những ứng dụng cần bộ nhớ dài hạn, thường gặp phải nhiều thách thức đáng kể. Julep đã được thiết kế để giải quyết vấn đề này một cách hiệu quả. Đây là một framework mã nguồn mở giúp xây dựng các tác nhân AI có khả năng lưu trữ trạng thái, sẵn sàng cho môi trường sản xuất.

Framework này 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 hội thoại, đả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ạn có thể bắt đầu với lệnh sau:

pip install julep

Dưới đây là cách nó hoạt động

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))

Julep cũng hỗ trợ ngôn ngữ JS, để biết thêm chi tiết, bạn có thể tham thêm tài liệu chính thức của họ.

julep

3. E2B

E2B Sandbox là một môi trường đám mây an toàn cho các agent 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ụ  tương tự như những gì con người dùng để thực hiện các tác vụ, giúp nó hoạt động và tương tác trong môi trường kỹ thuật số một cách hiệu quả, chẳng hạn như kho lưu trữ GitHub và trình duyệt đám mây.

Họ cung cấp trình biên dịch code tích hợp SDK cho Python và JavaScript/TypeScript. Trình biên dịch này cho phép bạn chạy code do AI tạo ra trong một máy ảo nhỏ an toàn - sandbox E2B - và thực thi mã. Bên trong sandbox là một máy chủ Jupyter mà bạn có thể điều khiển từ SDK.

Bắt đầu với E2B bằng lệnh sau:

npm i @e2b/code-interpreter

Chạy 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ọ.

e2b

4. Camel-ai

Giải quyết các hệ thống hợp tác multi-agent 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 xem là công cụ rất phù hợp cho việc này. Đây là một framework mã nguồn mở cung cấp phương pháp có thể mở rộng để nghiên cứu các hành vi và khả năng hợp tác của các hệ thống multi-agent.

Bắt đầu bằng cách cài đặt với lệnh sau:

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)

Để biết thêm thông tin, hãy tham khảo tài liệu chính thức của họ.

camelai

5. CopilotKit

Nếu bạn muốn tích hợp khả năng AI (AI capabilities) vào ứng dụng React hiện tại của mình, thì CopilotKit cho phép bạn sử dụng các mô hình GPT để tự động hóa tương tác với cả giao diện người dùng và phần backend của ứng dụng.

Đây là một Copilot đã được chuẩn bị sẵn mà bạn có thể tích hợp vào ứng dụng của mình hoặc bất kỳ mã nguồn nào bạn có quyền truy cập (OSS).

Nó cung cấp các thành phần React như các ô văn bản, cửa sổ pop-up, thanh bên và chatbot để bổ sung khả năng AI cho bất kỳ ứng dụng nào.

Bắt đầu với CopilotKit bằng lệnh sau đây.

npm i @copilotkit/react-core @copilotkit/react-ui

Một 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 (có thể thay đổi sang nhà cung cấp giao diện người dùng khác sau này).

"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.

copilotkit

6. Aider

Hãy tưởng tượng có một người cùng lập trình luôn sẵn lòng giúp đỡ mà không bao giờ làm phiền. Aider sẽ chính là người bạn đó. Đây là một trợ lý lập trình AI có thể bắt đầu một dự án, chỉnh sửa tệp hoặc làm việc với một kho lưu trữ Git hiện có và nhiều hơn thế nữa từ terminal.

Nó hoạt động với các mô hình ngôn ngữ lớn 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ư sau:

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 đặttài liệu khác.

aider

7. Haystack

Có rất nhiều công cụ để xây dựng những hệ thống AI phức tạp, nhưng nếu bạn muốn tạo ra một hệ thống tìm kiếm thông minh, có thể đưa vào sử dụng ngay lập tức, thì Haystack là lựa chọn hoàn hảo.

Cho dù bạn muốn xây dựng một hệ thống trả lời câu hỏi, tìm kiếm theo ngữ cảnh, hay bất cứ thứ gì phức tạp hơn, Haystack đều giúp bạn tạo ra các hệ thống này một cách dễ dàng và linh hoạt.

Điểm mạnh của Haystack nằm ở cấu trúc mô đun và rõ ràng. Bạn có thể tùy biến và kết hợp nhiều thành phần khác nhau để tạo ra một hệ thống phù hợp với nhu cầu của mình, từ việc tìm kiếm thông tin đến việc phân tích dữ liệu.

Haystack rất dễ sử dụng, đặc biệt là với những người đã quen với Python. Bạn chỉ cần cài đặt một lệnh duy nhất là có thể bắt đầu xây dựng hệ thống của mình.

pip install haystack-ai

Bây giờ, hãy xây dựng RAG Pipeline đầu tiên của bạn bằng các thành phần Haystack.

mport 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 Haystack.

haystack

8. Pgvectorscale

Các ứng dụng RAG hiện đại không thể hoàn thiện nếu thiếu cơ sở dữ liệu vector. Những cơ sở dữ liệu này lưu trữ tài liệu (văn bản, hình ảnh) dưới dạng các embedding, cho phép người dùng tìm kiếm các tài liệu có ý nghĩa tương tự.

Pgvectorscale là một phần mở rộng của PgVector, một cơ sở dữ liệu vector từ PostgreSQL. Nó có thể tích hợp liền mạch với các cơ sở dữ liệu Postgres hiện có. Nếu bạn đang xây dựng một ứng dụng với kho lưu trữ vector, đây là một lựa chọn không thể bỏ qua.

Bạn có thể cài đặt nó từ mã nguồn, sử dụng các trình quản lý gói như Yum, Homebrew, apt, v.v., hoặc sử dụng một container Docker.

Để bắt đầu, 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 database 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 với cột embedding. 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, hãy truy cập kho lưu trữ.

pgvectorscale

9. GPTCache

Nếu bạn đang xây dựng một ứng dụng yêu cầu các cuộc trò chuyện kéo dài với các mô hình trò chuyện và không muốn tiêu tốn quá nhiều chi phí, bạn sẽ cần đến bộ nhớ cache. Tuy nhiên, bộ nhớ cache truyền thống không hữu ích trong trường hợp này. Đây là lúc GPTCache phát huy tác dụng.

GPTCache là một công cụ bộ nhớ cache ngữ nghĩa từ Zilliz, nó cho phép bạn lưu trữ các cuộc trò chuyện trong kho vector ưa thích của mình.

Trước khi gửi một truy vấn đến LLM, nó sẽ tìm kiếm trong kho vector; nếu tìm thấy, nó sẽ lấy dữ liệu từ đó. Nếu không, nó sẽ chuyể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.

GPTCache

10. Mem0 (EmbedChain)

Mem0 cung cấp một bộ nhớ thông minh, tự học hỏi cho các mô hình ngôn ngữ lớn (Large Language Model). Nó cho phép bạn lưu trữ thông tin lâu dài cho từng người dùng, nhân vật ảo (agent) và cuộc trò chuyện.

Nếu bạn đang phát triển một chatbot hoặc hệ thống hỏi đáp dựa trên dữ liệu riêng, hãy cân nhắc sử dụng Mem0.

Để bắt đầu Mem0 hãy sử dụng lệnh sau:

pip install mem0ai

Sau đâ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 thông tin.

mem0

11. FastEmbed

Tốc độ thực thi là yếu tố quan trọng hàng đầu trong phát triển phần mềm, và nó còn quan trọng hơn khi xây dựng ứng dụng AI.

Thông thường, việc tạo ra embedding (ma trận số đại diện cho dữ liệu) có thể mất nhiều thời gian, làm chậm toàn bộ quá trình. FastEmbed từ Qdrant sẽ giúp bạn rất nhiều trong việc này, đây là một thư viện Python nhanh, nhẹ được xây dựng để tạo embedding.

Nó sử dụng ONNX runtime thay vì Pytorch, giúp tăng tốc độ gấp nhiều lần. Nó cũng hỗ trợ hầu hết các mô hình embedding nguồn mở tiên tiến hiện nay.

pip install fastembed

# or with GPU support

pip install fastembed-gpu

Sau đây là cách bạn có thể embedding 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, e.g. 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

Hãy xem kho lưu trữ của họ để biết thêm thông tin.

FastEmbed

12. Instructor

Nếu bạn đã từng làm việc với đầu ra của mô hình ngôn ngữ lớn, bạn sẽ biết rằng việc xác thực các phản hồi có cấu trúc là một thách thức.

Instructor là một công cụ mã nguồn mở giúp đơn giản hóa việc xác thực, thử lại và streaming các đầu ra của LLM.

Nó sử dụng Pydantic cho Python và Zod cho JS/TS để xác thực dữ liệu và hỗ trợ nhiều nhà cung cấp mô hình ngoài OpenAI.

Bắt đầu với Instructor bằng lệnh sau:

npm i @instructor-ai/instructor zod openai

Sau đâ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.

instructor

13. LiteLLM

Thực tế là chúng ta đều đã đôi lần khó chịu vì một nhà cung cấp mô hình mới không tuân theo định dạng SDK của OpenAI cho văn bản, hình ảnh, hoặc tạo embedding.

Tuy nhiên, với LiteLLM, 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.) như một sự thay thế trực tiếp cho các mô hình của OpenAI, nhờ vào việc sử dụng cùng một định dạng triển khai.

Họ cũng hỗ trợ cân bằng tải, dự phòng và theo dõi chi phí trên hơn 100 LLMs.

Để cài đặt LiteLLM hãy sử dụng lệnh sau:

pip install litellm

Sau đây là cách bạn có thể sử dụng mô hình Claude-2 để thay thế cho mô hình 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 thông tin, hãy tham khảo tài liệu chính thức của họ

litellm

Lời kết

VietnamWorks inTECH hy vọng thông qua những chia sẻ ở trên bạn đã có thể bỏ túi cho bản thân những trợ thủ đắc lực, giúp bạn tối ưu hóa quy trình phát triển ứng dụng một cách toàn diện. Nếu thấy bài viết hữu ích hãy chia sẻ cho bạn bè cùng biết nhé.

VietnamWorks inTECH

TẠO TÀI KHOẢN MỚI: XEM FULL “1 TÁCH CODEFEE” - NHẬN SLOT TƯ VẤN CV TỪ CHUYÊN GIA - CƠ HỘI RINH VỀ VOUCHER 200K