2025 年助你找到梦想工作必须掌握的 9 个开源工具

人工智能正在重塑就业格局,但并非媒体所描绘的那样。我们比以往任何时候都更需要解决问题的人。新领域、新技术和新市场正在迅速涌现。

作为软件开发人员,您必须密切关注所有这些新事物才能在市场上脱颖而出。但找到要学习的内容可能很难。

因此,我精心挑选了一份令人垂涎的工具清单,这些工具将使您与时俱进并提高您找到工作的机会。

那么,我们走吧。

Peter nodding 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 等著名框架合作。

有关更多信息,请访问官方文档,有关更复杂的示例,请参阅存储库的示例部分。

Composio GIF

为 Composio 存储库加星标 ⭐

2. Astral 的 UV——最快的 Python 包管理器

如果您以任何身份编写 Python,那么这是必不可少的。这可能是 Python 混乱的包管理生态系统的最佳解决方案。它是一个可以替代“pip”、“pip-tools”、“pipx”、“poetry”、“pyenv”、“twine”、“virtualenv”等的单一工具。

它是用 Rust 编写的,可以管理 Python 版本、安装应用程序、拥有类似 Cargo 的工作区,最重要的是,比“pip”快 100 倍。

开始使用它很容易。

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

使用 `pip`

pip install uv

uv 管理项目依赖关系和环境,支持锁文件、工作区等,类似于“rye”或“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!

查看项目文档以开始使用。

根据需要下载 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 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.
>>>>

在当前目录中使用特定的 Python 版本:

$ uv python pin pypy@3.11
Pinned `.python-version` to `pypy@3.11`

请参阅 Python 安装文档以开始使用。

UV Image

为 UV 存储库加注星标 ⭐

3. Pydantic——使用 Python 类型提示进行数据验证

哦天哪!它是我用过的最好的 Python 工具之一,并且与 Numpy、Sklearn 等保持相关性。

Pydantic 通过提供运行时数据验证和基于这些提示的解析,将 Python 的类型提示提升到一个新的水平。无论是处理 API 响应、配置文件还是复杂的嵌套数据,Pydantic 都能确保您的输入干净且结构良好,而无需大量样板代码。

如果您想要 Javascript 生态系统中类似的东西,您可以探索 Zod。

使用“pip”或“uv”安装它。

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

查看文档以了解更多信息。

探索 Pydantic 存储库⭐

4. Turborepo - 高性能 JavaScript 打包器

这是 JavaScript 和 Typescript 生态系统中 Mono 存储库的 UV 等效版本。与 UV 类似,Turborepo 也是用 Rust 编写的,性能极佳。

Monorepos 在许多方面都表现出色,但难以扩展。每个工作区都有自己的测试套件、linting 和构建流程,单个 Mono repo 可能要执行许多任务。

Turborepo 解决了您的 mono repo 的扩展问题。远程缓存存储了所有任务的结果,这意味着您的 CI 永远不需要重复做相同的工作。

查看文档以了解更多信息。

包括 Vercel、Netflix 和 Adob​​e 等公司在内的大型企业已广泛采用它。

Turborepo Image

探索 Pydantic 存储库⭐

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

查看文档以了解更多信息。

探索 RabbitMQ 存储库⭐

6. Sentry - 应用程序监控系统

如果您关心应用程序的稳定性,Sentry 是必备之选。它是实时跟踪错误、性能问题和应用程序运行状况的终极解决方案。无论您是为 Web、移动还是桌面构建应用程序,Sentry 都可以无缝集成,帮助您更快、更明智地进行调试。

借助其详细的堆栈跟踪、面包屑和用户上下文,您可以获得查明问题根源所需的一切。但它并不止于此 - Sentry 还通过事务跟踪和自定义指标等功能帮助您监控应用程序性能。

查看文档以了解更多信息。

Sentry Image

探索 Sentry 存储库⭐

7. Grafana——前所未有的数据可视化

如果您需要监控指标、日志或跟踪,Grafana 是您的首选工具。它是一个开源平台,可将您的原始数据转换为美观的交互式仪表板,让您轻松了解系统中发生的事情。

Grafana 几乎可以与任何数据源集成 - Prometheus、Elasticsearch、InfluxDB、AWS CloudWatch 等。

它绝对是您在几乎所有组织中都能找到的工具之一。

Grafana Image

探索 Sentry 存储库⭐

8. LangGraph——构建具有状态的 AI 代理

如果您曾经希望以更好的方式管理具有复杂工作流程的 AI 代理,那么 LangGraph 就是答案。它是一个用于构建有状态 AI 代理的框架,可以轻松处理多步骤流程、决策和上下文保留。

我们在 LangGraph 中构建了自己的 SWE 代理,其在测试 AI 编码代理功效的基准上获得了 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 上的文档以获取更多信息。

为 LangGraph 存储库加注 ⭐

9. Selenium - 浏览器自动化框架

每位技术专业人士在其职业生涯的某个阶段都会遇到浏览器自动化。许多公司依靠 Selenium 执行各种任务,包括 Web 自动化、测试和抓取动态内容。

Selenium 使开发人员能够轻松地以编程方式控制 Web 浏览器,使他们能够模拟用户交互,例如单击按钮、填写表单以及在页面之间导航

它可用于编程语言。

使用“pip”在 Python 中安装 Selenium。

pip install Selenium

对于基于 Chromium 的浏览器,必须安装 Chrome Webdriver;对于基于 Firefox 的浏览器,必须安装 Gecko Driver。

以下是使用 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("")

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

探索 Selenium 存储库⭐

感谢您的阅读。请提及您在工作场所经常使用的任何其他工具。