2025 年获得理想工作的 9 个必备开源工具

2025-05-24

2025 年获得理想工作的 9 个必备开源工具

人工智能正在重塑就业格局,但其方式与媒体的描述有所不同。我们比以往任何时候都更需要问题解决者。新领域、新技术和新市场正在迅速涌现。

作为软件开发者,你必须密切关注所有这些新事物,才能在市场中脱颖而出。但找到学习内容可能并不容易。
因此,我整理了一份令人垂涎的工具清单,它们能让你与时俱进,提高你找到工作的机会。

那么,我们走吧。

彼得点头 GIF


Composio 👑 - AI 代理的集成平台

我敢打赌(虽然不是真的!但你懂的),人工智能代理会非常受欢迎。新产品将完全由代理操作。然而,要让代理真正发挥作用,你需要将它们连接到外部应用程序。

如果您要创建 AI 工程代理,它必须能够访问 GitHub、Liner、Jira、Slack 等平台才能真正发挥作用。Composio 正是为此而生。我们支持您连接超过 250 个应用程序,从而自动执行复杂的任务。

我们像 OAuth 一样管理身份验证,因此您可以构建重要的功能。

这是一个新兴市场,活动丰富。了解这一点会让你的简历瞬间更酷炫。

Composio 的入门非常简单。

pip install composio-core
Enter fullscreen mode Exit fullscreen mode

添加 GitHub 集成。

composio add github
Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

运行此 Python 脚本以使用代理执行给定的指令。

Composio 与 LangChain、LlamaIndex、CrewAi 等著名框架兼容。

欲了解更多信息,请访问官方 文档,欲查看更复杂的示例,请参阅存储库的 示例 部分。

作曲 GIF

为 Composio 代码库加星标 ⭐


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

如果你从事任何 Python 开发,这都是必备工具。它可能是 Python 混乱的包管理生态系统的最佳解决方案。它只需一个工具,就能取代pip、  pip-tools、  pipx、  poetry、  、 等众多pyenv工具 twinevirtualenv

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

开始使用它很容易。

curl -LsSf https://astral.sh/uv/install.sh | sh
Enter fullscreen mode Exit fullscreen mode

使用pip

pip install uv
Enter fullscreen mode Exit fullscreen mode

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!
Enter fullscreen mode Exit fullscreen mode

请参阅 项目文档 以开始使用。

根据需要下载 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.
>>>>
Enter fullscreen mode Exit fullscreen mode

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

$ uv python pin pypy@3.11
Pinned `.python-version` to `pypy@3.11`
Enter fullscreen mode Exit fullscreen mode

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

紫外线图像
为 UV 存储库加星标⭐


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

哇!它是我用过的最好的 Python 工具之一,并且与 Numpy、Sklearn 等工具保持着良好的兼容性。

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

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

使用pip或安装它uv

uv add pydantic
Enter fullscreen mode Exit fullscreen mode

这是一个简单的例子。

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
Enter fullscreen mode Exit fullscreen mode

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

求助GIF动画啊 GIF

探索 Pydantic 仓库⭐


4. Turborepo - 高性能 JavaScript 打包器

这是 JavaScript 和 Typescript 生态系统中 Mono 代码库的 UV 版本。与 UV 类似,Turborepo 也使用 Rust 编写,以实现高性能。

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

Turborepo 解决了 Mono 代码库的扩展问题。 远程缓存 存储了所有任务的结果,这意味着您的 CI 无需重复执行相同的工作。

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

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

Turborepo 图像

探索 Pydantic 仓库⭐


5. RabbitMQ - 消息和流媒体代理

如果您正在构建任何需要异步通信的功能,RabbitMQ 绝对是您的不二之选。它可能是消息代理领域功能最丰富的解决方案,支持 AMQP、MQTT 和 STOMP 等多种协议。这使得它非常适合微服务、事件驱动架构和实时应用程序。

对于使用分布式系统的团队来说,RabbitMQ 是一个必不可少的工具。

这是一个发送和接收消息的简单示例。

安装amqplib

npm install amqplib
Enter fullscreen mode Exit fullscreen mode

生产者:将消息发送到队列。

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();
Enter fullscreen mode Exit fullscreen mode

消费者:从队列接收消息。

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();
Enter fullscreen mode Exit fullscreen mode

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

RabbitMQ 动图

探索 RabbitMQ 存储库⭐


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

如果您注重应用的稳定性,Sentry 是您的理想之选。它是实时追踪错误、性能问题和应用健康状况的终极解决方案。无论您是为 Web、移动还是桌面构建应用,Sentry 都能无缝集成,帮助您更快、更明智地进行调试。

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

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

哨兵图像

探索 Sentry 存储库⭐


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

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

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

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

Grafana 镜像

探索 Sentry 存储库⭐


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

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

我们在 LangGraph 中构建了自己的SWE 代理,它在SWE-Bench(测试 AI 编码代理功效的基准)上的得分为 48.60%。

安装 LangGraph。

npm install @langchain/core @langchain/langgraph @langchain/openai @langchain/community
Enter fullscreen mode Exit fullscreen mode

将 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,
);
Enter fullscreen mode Exit fullscreen mode

请阅读此文以了解示例流程。此外,请查看LangGraph文档了解更多信息。

语言图表 GIF

为 LangGraph 代码库加星标 ⭐


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

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

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

它可用于编程语言。

使用 Python 安装 Selenium pip

pip install Selenium
Enter fullscreen mode Exit fullscreen mode

您必须为基于 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("<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/)
Enter fullscreen mode Exit fullscreen mode

硒

探索 Selenium 存储库⭐


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

文章来源:https://dev.to/composiodev/9-must-know-open-source-tools-to-land-your-dream-job-in-2025-iki
PREV
9 个开源库让你的简历脱颖而出⚡🚀
NEXT
掌握 AI 开发必备的 9 个开源 JavaScript 库🧙✨