9 công cụ mã nguồn mở cần biết để đạt được công việc mơ ước trong năm 2025
Trí tuệ nhân tạo (AI) đang định hình lại thị trường việc làm, nhưng không theo cách mà giới truyền thông miêu tả. Chúng ta cần nhiều người giải quyết vấn đề hơn bao giờ hết, bởi vì các lĩnh vực, công nghệ và thị trường mới đang nổi lên nhanh chóng.
Là nhà phát triển phần mềm, bạn sẽ phải để mắt đến tất cả những điều mới mẻ này để nổi bật trên thị trường. Tuy nhiên, việc tìm ra những gì cần học có thể khó khăn.
Vì vậy, tôi đã tuyển chọn một danh sách các công cụ đáng thèm muốn, sẽ giúp bạn luôn cập nhật và cải thiện cơ hội tìm được việc làm. Hãy cùng bắt đầu nhé!
1. Composio - Nền tảng tích hợp cho các tác tử AI
Tôi dám chắc chắn rằng các tác tử AI sẽ cực kỳ phổ biến. Các sản phẩm mới sẽ được vận hành hoàn toàn bằng tác tử. Tuy nhiên, để làm cho các tác tử thực sự có khả năng, bạn cần kết nối chúng với các ứng dụng bên ngoài.
Nếu bạn đang tạo một tác tử kỹ thuật AI, nó phải truy cập GitHub, Liner, Jira, Slack, v.v. để thực sự hữu ích. Composio làm được điều này. Composio cho phép bạn kết nối hơn 250 ứng dụng để tự động hóa các tác vụ phức tạp.
Composio quản lý xác thực như OAuth, vì vậy bạn có thể xây dựng các tính năng quan trọng.
Đây là một thị trường mới nổi với nhiều hoạt động. Việc học hỏi điều này sẽ ngay lập tức làm cho CV của bạn trở nên hấp dẫn hơn.
Bắt đầu với Composio rất dễ dàng.
pip install composio-core
Thêm tích hợp GitHub.
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 để đánh dấu sao 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 hướng dẫn đã cho bằng tác tử.
Composio hoạt động với các framework nổi tiếng như LangChain, LlamaIndex, CrewAi, v.v.
2. UV của Astral - Trình quản lý gói Python nhanh nhất
Nếu bạn viết Python ở bất kỳ khả năng nào, đây là điều bắt buộc. Có lẽ đây là giải pháp tốt nhất cho hệ sinh thái quản lý gói lộn xộn của Python. Nó là một công cụ duy nhất thay thế pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv và hơn thế nữa.
Nó được viết bằng Rust và có thể quản lý các phiên bản Python, cài đặt ứng dụng, có không gian làm việc giống như cargo và quan trọng nhất là nhanh hơn pip gấp 100 lần.
Bắt đầu với nó rất dễ dàng.
curl -LsSf https://astral.sh/uv/install.sh | sh
Sử dụng pip:
pip install uv
uv quản lý các dependency và môi trường dự án, với hỗ trợ cho các tệp khóa, không gian làm việc và hơn thế nữa, tương tự như rye hoặc poetry:
$ uv init example
Initialized project `example` at `/home/user/example`
$ cd example
$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
+ example==0.1.0 (from file:///home/user/example)
+ ruff==0.5.7
$ uv run ruff check
All checks passed!
Tải xuống các phiên bản Python khi cần:
$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ uv run --python pypy@3.8 -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>
Sử dụng một phiên bản Python cụ thể trong thư mục hiện tại:
$ uv python pin pypy@3.11
Pinned `.python-version` to `pypy@3.11`
3. Pydantic - Xác thực dữ liệu bằng gợi ý kiểu Python
Nó là một trong những công cụ tốt nhất mà tôi đã sử dụng với Python. Nó chịu trách nhiệm giữ cho Python phù hợp cùng với Numpy, Sklearn, v.v.
Pydantic nâng gợi ý kiểu của Python lên một tầm cao mới bằng cách cung cấp xác thực và phân tích cú pháp dữ liệu thời gian chạy dựa trên các gợi ý đó. Cho dù xử lý phản hồi API, tệp cấu hình hay dữ liệu lồng nhau phức tạp, Pydantic đảm bảo đầu vào của bạn sạch sẽ và có cấu trúc tốt mà không cần mã soạn sẵn mở rộng.
Bạn có thể khám phá Zod nếu bạn muốn những thứ tương tự trong hệ sinh thái Javascript.
Cài đặt nó với pip hoặc uv.
uv add pydantic
Dưới đây là một ví dụ đơn giản.
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str = 'John Doe'
signup_ts: Optional[datetime] = None
friends: List[int] = []
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123
4. Turborepo - Trình đóng gói hiệu suất cao cho javascript
Đây là phiên bản tương đương của UV trong hệ sinh thái Javascript và Typescript cho mono repo. Tương tự như UV, Turborepo cũng được viết bằng Rust để có hiệu suất cao.
Monorepo rất tốt trong nhiều việc nhưng lại khó mở rộng. Mỗi không gian làm việc có bộ thử nghiệm, linting và quy trình xây dựng riêng. Một mono repo duy nhất có thể có nhiều tác vụ cần thực thi.
Turborepo giải quyết vấn đề mở rộng quy mô của mono repo của bạn. Remote Cache lưu trữ kết quả của tất cả các tác vụ của bạn, nghĩa là CI của bạn không bao giờ cần phải làm cùng một công việc hai lần.
Các doanh nghiệp lớn, bao gồm các công ty như Vercel, Netflix và Adobe, đã áp dụng rộng rãi nó.
5. RabbitMQ - Trình môi giới nhắn tin và phát trực tuyến
Nếu bạn đang xây dựng bất cứ thứ gì cần giao tiếp không đồng bộ, RabbitMQ là điều không cần phải suy nghĩ. Nó có lẽ là giải pháp linh hoạt nhất trong không gian môi giới tin nhắn, hỗ trợ nhiều giao thức như AMQP, MQTT và STOMP. Điều này làm cho nó trở nên hoàn hảo cho các microservice, kiến trúc hướng sự kiện và các ứng dụng thời gian thực.
Đối với các nhóm làm việc với hệ thống phân tán, RabbitMQ là một công cụ thiết yếu.
Dưới đây là một ví dụ đơn giản về việc gửi và nhận tin nhắn.
Cài đặt gói amqplib:
npm install amqplib
Producer: Gửi tin nhắn đến hàng đợi.
const amqp = require('amqplib');
const sendMessage = async () => {
const queue = 'task_queue';
const message = 'Hello, RabbitMQ!';
try {
// Connect to RabbitMQ
const connection = await amqp.connect('amqp://localhost');
const channel = await connection.createChannel();
// Ensure the queue exists
await channel.assertQueue(queue, { durable: true });
// Send a message to the queue
channel.sendToQueue(queue, Buffer.from(message), { persistent: true });
console.log(`[x] Sent: ${message}`);
// Close the connection
setTimeout(() => {
connection.close();
process.exit(0);
}, 500);
} catch (error) {
console.error('Error:', error);
}
};
sendMessage();
Consumer: Nhận tin nhắn từ hàng đợi.
const amqp = require('amqplib');
const receiveMessage = async () => {
const queue = 'task_queue';
try {
// Connect to RabbitMQ
const connection = await amqp.connect('amqp://localhost');
const channel = await connection.createChannel();
// Ensure the queue exists
await channel.assertQueue(queue, { durable: true });
console.log(`[x] Waiting for messages in ${queue}. To exit, press CTRL+C`);
// Consume messages
channel.consume(
queue,
(msg) => {
if (msg !== null) {
console.log(`[x] Received: ${msg.content.toString()}`);
channel.ack(msg);
}
},
{ noAck: false }
);
} catch (error) {
console.error('Error:', error);
}
};
receiveMessage();
6. Sentry - Hệ thống giám sát ứng dụng
Nếu bạn quan tâm đến sự ổn định của ứng dụng, Sentry là điều bắt buộc phải có. Nó là giải pháp tối ưu để theo dõi lỗi, sự cố hiệu suất và tình trạng ứng dụng trong thời gian thực. Cho dù bạn đang xây dựng cho web, thiết bị di động hay máy tính để bàn, Sentry tích hợp liền mạch để giúp bạn gỡ lỗi nhanh hơn và thông minh hơn.
Với các dấu vết stack chi tiết, breadcrumbs và ngữ cảnh người dùng, bạn có mọi thứ cần thiết để xác định nguyên nhân gốc rễ của sự cố. Nhưng nó không dừng lại ở đó—Sentry cũng giúp bạn giám sát hiệu suất ứng dụng với các tính năng như theo dõi giao dịch và số liệu tùy chỉnh.
7. Grafana - Trực quan hóa dữ liệu của bạn hơn bao giờ hết
Nếu bạn cần giám sát số liệu, nhật ký hoặc dấu vết, Grafana là công cụ phù hợp. Nó là một nền tảng mã nguồn mở biến dữ liệu thô của bạn thành các bảng điều khiển tương tác đẹp mắt, giúp dễ dàng hiểu được những gì đang xảy ra trong hệ thống của bạn.
Grafana tích hợp với hầu như mọi nguồn dữ liệu—Prometheus, Elasticsearch, InfluxDB, AWS CloudWatch, v.v.
Đây chắc chắn là một trong những công cụ bạn có thể tìm thấy trong hầu hết các tổ chức.
8. LangGraph - Xây dựng tác tử AI với trạng thái
Nếu bạn đã từng mong muốn có một cách tốt hơn để quản lý các tác tử AI với quy trình làm việc phức tạp, LangGraph là câu trả lời. Nó là một framework để xây dựng các tác tử AI có trạng thái có thể dễ dàng xử lý các quy trình nhiều bước, ra quyết định và duy trì ngữ cảnh.
Chúng tôi đã xây dựng tác tử SWE của riêng mình trong LangGraph, đạt điểm 48,60% trên SWE-Bench, một điểm chuẩn để kiểm tra hiệu quả của các tác tử mã hóa AI.
Cài đặt LangGraph.
npm install @langchain/core @langchain/langgraph @langchain/openai @langchain/community
Thêm API key cho Tavily và OpenAI vào biến môi trường.
// agent.ts
// IMPORTANT - Add your API keys here. Be careful not to publish them.
process.env.OPENAI_API_KEY = "sk-...";
process.env.TAVILY_API_KEY = "tvly-...";
import { TavilySearchResults } from "@langchain/community/tools/tavily_search";
import { ChatOpenAI } from "@langchain/openai";
import { MemorySaver } from "@langchain/langgraph";
import { HumanMessage } from "@langchain/core/messages";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
// Define the tools for the agent to use
const agentTools = [new TavilySearchResults({ maxResults: 3 })];
const agentModel = new ChatOpenAI({ temperature: 0 });
// Initialize memory to persist state between graph runs
const agentCheckpointer = new MemorySaver();
const agent = createReactAgent({
llm: agentModel,
tools: agentTools,
checkpointSaver: agentCheckpointer,
});
// Now it's time to use!
const agentFinalState = await agent.invoke(
{ messages: [new HumanMessage("what is the current weather in sf")] },
{ configurable: { thread_id: "42" } },
);
console.log(
agentFinalState.messages[agentFinalState.messages.length - 1].content,
);
const agentNextState = await agent.invoke(
{ messages: [new HumanMessage("what about ny")] },
{ configurable: { thread_id: "42" } },
);
console.log(
agentNextState.messages[agentNextState.messages.length - 1].content,
);
9. Selenium - Framework tự động hóa trình duyệt
Mọi chuyên gia công nghệ đều gặp phải tự động hóa trình duyệt tại một số thời điểm trong sự nghiệp của họ. Nhiều công ty dựa vào Selenium cho các tác vụ khác nhau, bao gồm tự động hóa web, thử nghiệm và cạo nội dung động.
Selenium giúp các nhà phát triển dễ dàng kiểm soát các trình duyệt web theo chương trình, cho phép họ mô phỏng các tương tác 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.
Nó có sẵn trong các ngôn ngữ lập trình.
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:
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()
For more, check the [documentation.](https://www.selenium.dev/documentation/)
Cảm ơn các bạn đã theo dõi bài viết vừa rồi!
All rights reserved