阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!

人工智慧正在重塑工作格局,但並不像媒體描述的那樣。我們比以往任何時候都需要更多的問題解決者。新領域、新技術、新市場迅速湧現。

作為軟體開發人員,您必須密切關注所有這些新事物才能在市場上脫穎而出。但要找到要學的東西可能很困難。

因此,我整理了一份令人垂涎的工具清單,可以幫助您保持相關性並提高找到工作的機會。

所以。我們走吧。

彼得點頭 GIF


Composio 👑 - AI 代理程式的整合平台

我可以用我的生命打賭(不是真的!但你明白了)人工智慧代理將非常受歡迎。新產品將完全採用代理經營。然而,為了使代理真正具有能力,您需要將它們連接到外部應用程式。

如果你正在建立一個AI工程代理,它必須存取GitHub、Liner、Jira、Slack等,才能真正有用。 Composio 就是這樣做的。我們允許您連接超過 250 個應用程式來自動執行複雜的任務。

我們像 OAuth 一樣管理身份驗證,因此您可以建立重要的功能。

這是一個有許多活動的新興市場。學習這一點將立即讓你的履歷變得更酷。

Composio 入門很簡單。

pip install composio-core

新增 GitHub 整合。

composio add github

Composio 代表您處理使用者身份驗證和授權。

以下是如何使用 GitHub 整合來為儲存庫加註星標。

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

執行此 Python 腳本以使用代理程式執行給定的指令。

Composio 可與 LangChain、LlamaIndex、CrewAi 等著名框架搭配使用。

有關更多訊息,請存取官方文件,有關更複雜的示例,請參閱存儲庫的示例部分。

合成 GIF

{% cta https://dub.composio.dev/77b7JH5 %}為 Composio 儲存庫加註星標 ⭐{% endcta %}


  1. Astral 的 UV - 最快的 Python 套件管理器

如果你以任何身分寫 Python,這是必須的。可能是 Python 混亂的套件管理生態系統的最佳解決方案。它是一個替代pippip-toolspipxpoetrypyenvtwinevirtualenv等的單一工具。

它是用 Rust 編寫的,可以管理 Python 版本、安裝應用程式、擁有類似貨物的工作區,最重要的是,比pip快 100 倍。

開始使用它很容易。

curl -LsSf https://astral.sh/uv/install.sh | sh

使用pip

pip install uv

uv 管理專案依賴項和環境,支援鎖定檔案、工作區等,類似ryepoetry

$ 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!

請參閱專案文件以開始使用。

根據需要下載Python版本:

$ 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 [email protected] -- 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.
>>>>

使用目前目錄中的特定Python版本:

$ uv python pin [email protected]
Pinned `.python-version` to `[email protected]`

請參閱Python 安裝文件以開始使用。

紫外線影像

{% cta https://github.com/astral-sh/uv %}為 UV 儲存庫加註星標 ⭐{% endcta %}


  1. Pydantic - 使用 Python 類型提示進行資料驗證

噢,孩子!它是我在 Python 中使用過的最好的工具之一,負責保持它與 Numpy、Sklearn 等的相關性。

Pydantic 透過提供執行時資料驗證和基於這些提示的解析,將 Python 的類型提示提升到一個新的水平。無論是處理 API 回應、設定檔還是複雜的嵌套資料,Pydantic 都能確保您的輸入乾淨且結構良好,而無需大量樣板程式碼。

如果您想在 Javascript 生態系統中獲得類似的東西,您可以探索 Zod。

使用pipuv安裝它。

uv add pydantic

這是一個簡單的例子。

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

查看文件以了解更多資訊。

派丹蒂克 GIF

{% cta https://github.com/pydantic/pydantic %}探索 Pydantic 儲存庫 ⭐{% endcta %}


  1. Turborepo - 用於 JavaScript 的高效能捆綁器

這是 Javascript 和 Typescript 生態系統中 Mono 儲存庫的 UV 等效項。與 UV 類似,Turborepo 也是用 Rust 編寫的,以實現高性能。

Monorepos 在很多方面都很出色,但難以擴展。每個工作區都有其測試套件、linting 和建置流程,且單一單一儲存庫可能有許多任務要執行。

Turborepo 解決了 Mono 儲存庫的擴充問題。遠端快取儲存所有任務的結果,這意味著您的 CI 永遠不需要重複執行相同的工作。

查看文件以了解更多資訊。

Vercel、Netflix 和 Adobe 等大型企業已廣泛採用它。

渦輪雷波影像

{% cta https://github.com/vercel/turborepo %}探索 Pydantic 儲存庫 ⭐{% endcta %}


  1. RabbitMQ - 訊息傳遞和串流代理

如果您正在建立任何需要非同步通訊的東西,那麼 RabbitMQ 是一個明智的選擇。它可能是訊息代理領域最通用的解決方案,支援 AMQP、MQTT 和 STOMP 等多種協定。這使其非常適合微服務、事件驅動架構和即時應用程式。

對於使用分散式系統的團隊來說,RabbitMQ 是個不可或缺的工具。

這是發送和接收訊息的簡單範例。

安裝amqplib

npm install amqplib

生產者:將訊息傳送到佇列。

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

消費者:從隊列接收訊息。

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

查看文件以了解更多資訊。

哪裡可以辦 GIF

{% cta https://github.com/rabbitmq %}探索 RabbitMQ 儲存庫 ⭐{% endcta %}


6.Sentry-應用程式監控系統

如果您關心應用程式的穩定性,Sentry 是必備工具。它是即時追蹤錯誤、效能問題和應用程式執行狀況的終極解決方案。無論您是針對網路、行動裝置還是桌面進行建置,Sentry 都能無縫集成,幫助您更快、更明智地進行除錯。

借助其詳細的堆疊追蹤、麵包屑和用戶上下文,您可以獲得找出問題根本原因所需的一切。但它不止於此 - Sentry 還可以透過事務追蹤和自訂指標等功能幫助您監控應用程式效能。

查看文件以了解更多資訊。

哨兵影像

{% cta https://github.com/getsentry/sentry %}探索 Sentry 儲存庫 ⭐{% endcta %}


  1. Grafana - 以前所未有的方式視覺化您的資料

如果您需要監控指標、日誌或跟踪,Grafana 是首選工具。它是一個開源平台,可將您的原始資料轉換為美觀的互動式儀表板,讓您可以輕鬆了解系統中發生的情況。

Grafana 幾乎可以與任何資料來源整合——Prometheus、Elasticsearch、InfluxDB、AWS CloudWatch 等。

它絕對是您在幾乎所有組織中都可以找到的工具之一。

格拉法納影像

{% cta https://github.com/grafana/grafana %}探索 Sentry 儲存庫 ⭐{% endcta %}


  1. LangGraph - 使用狀態建構 AI 代理

如果您曾經希望有一種更好的方法來管理具有複雜工作流程的 AI 代理,LangGraph 就是答案。它是一個用於建立有狀態人工智慧代理的框架,可以輕鬆處理多步驟流程、決策和上下文保留。

我們在 LangGraph 中建立了自己的SWE 代理,在測試 AI 編碼代理功效的基準SWE-Bench上得分為 48.60%。

安裝 LangGraph。

npm install @langchain/core @langchain/langgraph @langchain/openai @langchain/community

將 Tavily 和 OpenAI 的 API 金鑰新增至環境變數。

// 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,
);

請閱讀本文以了解範例的流程。另外,請查看 LangGraph 上的文件以取得更多資訊。

郎圖 GIF

{% cta https://github.com/langchain-ai/langgraphjs %}為 LangGraph 儲存庫加註星標 ⭐{% endcta %}


  1. Selenium - 瀏覽器自動化框架

每個技術專業人士在職業生涯的某個階段都會遇到瀏覽器自動化。許多公司依靠 Selenium 來完成各種任務,包括 Web 自動化、測試和抓取動態內容。

Selenium 讓開發人員可以輕鬆地以程式方式控制 Web 瀏覽器,從而模擬使用者交互,例如單擊按鈕、填寫表單以及在頁面之間導航

它可以在程式語言中使用。

使用pip在 Python 中安裝 Selenium。

pip install Selenium

您必須為基於 Chromium 的瀏覽器安裝 Chrome Webdriver,為 Firefox 瀏覽器安裝 Gecko 驅動程式。

以下是將 Selenium 與 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/)

碳粉匣

{% cta https://github.com/SeleniumHQ/selenium %}探索 Selenium 儲存庫 ⭐{% endcta %}


感謝您的閱讀。請提及您在工作場所大量使用的任何其他工具。


原文出處:https://dev.to/composiodev/9-must-know-open-source-tools-to-land-your-dream-job-in-2025-iki


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。

阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!