+3

Thành thạo 7 thư viện mã nguồn mở này sẽ giúp công việc của bạn thăng tiến không ngừng

Công nghệ luôn không ngừng phát triển, việc thành thạo nhiều thứ sẽ giúp bạn có thể phát triển tốt hơn trong con đường lập trình, công nghệ thông tin nói chung và thu hút được sự chú ý của nhiều nhà tuyển dụng nói riêng. Bài viết này sẽ gợi ý cho bạn những thư viện mã nguồn mở mà bạn nên nắm rõ để phục vụ cho công việc của mình.

1. Composio - Nền tảng công cụ tích hợp AI hữu ích

AI đang len lỏi vào mọi ngóc ngách của thế giới và không có gì phải bàn cãi rằng lực lượng lao động trong tương lai sẽ là hệ thống lai giữa con người và AI. Để điều này xảy ra, mô hình AI sẽ có thể truy cập các hệ thống bên ngoài. Composio là giải pháp hàng đầu trong lĩnh vực này. Nó cung cấp danh mục công cụ và tích hợp ngày càng mở rộng trên các ngành dọc, từ CRM, HRM và bán hàng cho đến phát triển, năng suất và quản trị.

Composio có thể tích hợp dễ dàng các ứng dụng như GitHub, Slack, Jira, Gmail, v.v., với các mô hình AI để tự động hóa quy trình làm việc phức tạp trong thế giới thực. Nó hỗ trợ Python và Javascript. Bạn có thể bắt đầu nhanh chóng với Composio bằng cách sử dụng pip hoặc npm.

pip install composio-core

npm install composio-core

Đối với Python, bạn có thể thêm tích hợp với Github vào Composio qua câu lệnh sau:

composio add github

Composio xử lý xác thực và ủy 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 để gắn sao cho 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 hướng dẫn đã cho bằng cách sử dụng agent.

Đối với JavaScript, bạn có thể cài đặt composio 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ể 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à để các agent thực hiện công việc thay bạn.

2. Apache Kafka - Nền tảng Distributed Event Streaming rất được ưa chuộng

Apache Kafka được rất nhiều doanh nghiệp sử dụng, thực tế nếu như bạn thành thạo trong việc sử dụng nền tảng này sẽ khiến CV của bạn rất nổi bật và được chú ý.

Apache Kafka là một nền tảng phân tán mã nguồn mở (Distributed Event Streaming) để xử lý các luồng dữ liệu thời gian thực. Nó cho phép thu thập, lưu trữ và xử lý khối lượng lớn dữ liệu sự kiện với khả năng chịu lỗi cao.

Nó là nền tảng lý tưởng để xây dựng các hệ thống hướng sự kiện. Các công ty lớn như Netflix, LinkedIn và Uber sử dụng Kafka để truyền phát dữ liệu và phân tích thời gian thực, quản lý kiến trúc và hệ thống giám sát hướng sự kiện và cho phép đề xuất và thông báo thời gian thực.

Tải xuống bản phát hành Kafka mới nhất trên trang chủ của sản phẩm và giải nén nó để bắt đầu bằng các câu lệnh sau:

$ tar -xzf kafka_2.13-3.8.0.tgz
$ cd kafka_2.13-3.8.0

Thiết lập Kafka với Kraft.

Để sử dụng Kafka với Kraft, hãy tạo cụm UUID.

KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)" 

Định dạng thư mục Nhật ký

bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

Khởi động máy chủ Kafka

bin/kafka-server-start.sh config/kraft/server.properties

Sau đó, bạn có thể tạo chủ đề và xuất bản và sử dụng các sự kiện

Trước khi bạn viết sự kiện của mình, bạn phải tạo chủ đề. Chạy cái này trong một shell khác.

bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

Bây giờ, hãy viết một số sự kiện vào chủ đề.

bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
>This is my first event
>This is my second event

Đọc các sự kiện.

bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

Bạn có thể tìm hiểu thêm về Kafka trong các tài liệu có sẵn ở trên mạng.

3. Grafana - Nền tảng phân tích và quan sát mã nguồn mở

Grafana là một phần mềm mã nguồn mở khác được nhiều công ty lớn sử dụng. Nó là một nền tảng phân tích và giám sát cho phép bạn truy vấn, lưu trữ và hình dung các số liệu từ nhiều nguồn dữ liệu. Bạn cũng có thể tạo, khám phá và chia sẻ bảng điều khiển với nhóm của mình.

Các tính năng của Grafana bao gồm

  • Hình dung số liệu và nhật ký.
  • Bảng điều khiển động.
  • Cảnh báo trên Slack, Pagerduty, v.v., dựa trên các quy tắc tùy chỉnh cho số liệu.
  • Khám phá các số liệu thông qua các truy vấn ad-hoc.
  • Trộn nhiều nguồn dữ liệu trong cùng một biểu đồ.

Bạn có thể truy cập trang chủ của Grafana để khám phá chi tiết hơn về cách sử dụng, cài đăt nền tảng.

4. Celery - Nền tảng Distributed task queue uy tín

Việc xây dựng một ứng dụng mạnh mẽ có thể là một thách thức, đặc biệt là khi cần tính đến nhiều sự kiện. Celery có thể hữu ích trong những tình huống này.

Celery là một phần mềm mã nguồn mở đơn giản, linh hoạt, phân tán, tạo điều kiện cho việc xử lý thời gian thực các hàng đợi tác vụ và lập lịch biểu. Nó cho phép bạn giảm tải các tác vụ tốn thời gian và thực hiện chúng không đồng bộ trong nền, cải thiện hiệu suất và khả năng mở rộng của ứng dụng của bạn.

Nó có sẵn trong hầu hết các ngôn ngữ lập trình, từ Python và JS đến Go và Rust.

Celery sử dụng trình trung gian như Redis và RabbitMQ để hoạt động.

Bắt đầu nhanh chóng bằng cách cài đặt với pip.

pip install celery reddit

Khởi động máy chủ Redis trong nền.

redis-server

Xác định một tác vụ đơn giản như gửi email.

from celery import Celery

# Define a Celery app with Redis as the message broker
app = Celery('tasks', broker='redis://localhost:6379/0')

# Define a simple task (e.g., sending an email)
@app.task
def send_email(recipient):
    print(f"Sending email to {recipient}")
    return f"Email sent to {recipient}"

Khởi động Celery worker bằng cách chạy lệnh sau trong terminal:

celery -A tasks worker --loglevel=info

Giờ đây, bạn có thể sử dụng send_email không đồng bộ trong mã Python của mình. Tạo một tập lệnh Python khác để gọi tác vụ:

python
Copy code
from tasks import send_email

# Call the task asynchronously using `.delay()`
send_email.delay('user@example.com')

Sau khi bạn gọi send_email.delay(), tác vụ sẽ được Celery worker xử lý không đồng bộ và bạn sẽ thấy một cái gì đó như thế này trong terminal nơi Celery worker đang chạy:

[2024-09-24 12:00:00,000: INFO/MainProcess] Task tasks.send_email[abc123] succeeded in 0.001s: 'Email sent to user@example.com'

5. Selenium - Nền tảng tự động hóa trình duyệt

Tự động hóa trình duyệt là một trong những điều không thể tránh khỏi mà bạn sẽ gặp phải ít nhất một lần trong sự nghiệp công nghệ của mình. Nhiều công ty sử dụng Selenium cho nhiều mục đích, chẳng hạn như tự động hóa web, thử nghiệm và thậm chí là cạo nội dung web động.

Selenium cho phép các nhà phát triển tương tác với các trình duyệt web theo chương trình, mô phỏng các hành động của người dùng như nhấp vào nút, điền vào biểu mẫu và điều hướng giữa các trang. Điều này làm cho nó trở thành một công cụ vô giá để thử nghiệm các ứng dụng web trên các trình duyệt và nền tảng.

Nó có sẵn trong các ngôn ngữ lập trình. Bạn có thể cài đặt Selenium trong Python với pip.

pip install Selenium

Bạn phải cài đặt Chrome Webdriver cho các trình duyệt dựa trên Chromium và Gecko Driver cho các trình duyệt Firefox.

Dưới đây là ví dụ về việc sử dụng Selenium với ChromeDriver:

python
Copy code
from selenium import webdriver

# Specify the path to your ChromeDriver executable
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# Open a webpage
driver.get("https://www.example.com")

# Perform actions (e.g., click a button, find elements, etc.)
print(driver.title)  # Print the page title

# Close the browser
driver.quit()

6. LlamaIndex - Nền tảng dữ liệu cho các ứng dụng LLM

AI đang rất hot hiện nay và nhiều công ty đang xây dựng các sản phẩm xung quanh các mô hình AI. Không thể có thời điểm nào tốt hơn để trở thành nhà phát triển AI.

LlamaIndex là một framework hàng đầu để xây dựng các ứng dụng sử dụng mô hình ngôn ngữ lớn (LLM). Nó cho phép bạn kết nối bất kỳ kho dữ liệu nào với cơ sở dữ liệu quan hệ, đồ thị hoặc vectơ với LLM. Nó cung cấp tất cả các tính năng cần thiết, chẳng hạn như bộ tải dữ liệu, trình kết nối, trình phân đoạn, trình xếp hạng lại, v.v., để xây dựng các ứng dụng AI hiệu quả.

Bắt đầu nhanh chóng với LlamaIndex bằng cách cài đặt nó qua pip.

pip install llamaindex

Một ví dụ đơn giản về việc sử dụng cơ sở dữ liệu vectơ trong LlamaIndex.

# custom selection of integrations to work with core
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-replicate
pip install llama-index-embeddings-huggingface

import os

os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(documents)

Truy vấn cơ sở dữ liệu.

query_engine = index.as_query_engine()
query_engine.query("YOUR_QUESTION")

Để biết thêm về thông tin về thư viện này, bạn có thể truy cập trang chủ và tham khảo tài liệu hướng dẫn của họ.

7. Pytorch Lightning - Nền tảng Deep Learning

Biết Pytorch Lightning có thể giúp bạn tốt hơn nếu bạn đang phát triển mô hình AI.

Đó là một framework linh hoạt được xây dựng bằng PyTorch giúp tổ chức và phát triển các dự án học sâu. Nó cung cấp các công cụ để đào tạo, thử nghiệm và triển khai các mô hình trên các lĩnh vực khác nhau.

Dưới đây là một số ưu điểm của việc sử dụng Lightning so với PyTorch thuần túy:

  • Nó làm cho mã PyTorch dễ đọc hơn, được tổ chức tốt hơn và thân thiện với người dùng hơn.
  • Nó làm giảm mã lặp đi lặp lại bằng cách cung cấp các vòng lặp đào tạo và tiện ích tích hợp sẵn.
  • Nó đơn giản hóa quá trình đào tạo, thử nghiệm và triển khai các mô hình với ít mã không cần thiết hơn.

Bạn có thể bắt đầu với Lightning bằng cách cài đặt nó với pip:

Xác định bộ mã hóa tự động bằng mô-đun Lightning.

import os
from torch import optim, nn, utils, Tensor
from torchvision.datasets import MNIST
from torchvision.transforms import ToTensor
import lightning as L

# define any number of nn.Modules (or use your current ones)
encoder = nn.Sequential(nn.Linear(28 * 28, 64), nn.ReLU(), nn.Linear(64, 3))
decoder = nn.Sequential(nn.Linear(3, 64), nn.ReLU(), nn.Linear(64, 28 * 28))

# define the LightningModule
class LitAutoEncoder(L.LightningModule):
    def __init__(self, encoder, decoder):
        super().__init__()
        self.encoder = encoder
        self.decoder = decoder

    def training_step(self, batch, batch_idx):
        # training_step defines the train loop.
        # it is independent of forward
        x, _ = batch
        x = x.view(x.size(0), -1)
        z = self.encoder(x)
        x_hat = self.decoder(z)
        loss = nn.functional.mse_loss(x_hat, x)
        # Logging to TensorBoard (if installed) by default
        self.log("train_loss", loss)
        return loss

    def configure_optimizers(self):
        optimizer = optim.Adam(self.parameters(), lr=1e-3)
        return optimizer

# init the autoencoder
autoencoder = LitAutoEncoder(encoder, decoder)

Tải dữ liệu MNIST.

# setup data
dataset = MNIST(os.getcwd(), download=True, transform=ToTensor())
train_loader = utils.data.DataLoader(dataset)

Lightning Trainer “trộn lẫn” bất kỳ LightningModule nào với bất kỳ tập dữ liệu nào và trừu tượng hóa tất cả sự phức tạp về kỹ thuật cần thiết cho quy mô.

# train the model (hint: here are some helpful Trainer arguments for rapid idea iteration)
trainer = L.Trainer(limit_train_batches=100, max_epochs=1)
trainer.fit(model=autoencoder, train_dataloaders=train_loader)

Để biết thêm về Lightning, hãy xem tài liệu chính thức trên trang chủ của họ.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.