为了账号安全,请及时绑定邮箱和手机立即绑定

2025年助你梦想工作的九款必备开源工具

标签:
开源

AI正在重塑就业格局,但并非像媒体所描绘的那样。如今我们比任何时候都需要更多的解决问题的人。新领域、新技术和新市场不断涌现。

作为一名软件开发者,你们需要关注所有这些新的工具和技术才能在市场中脱颖而出。但是很难找到要学习的东西。
因此,我整理了一份受欢迎的工具清单,这将帮助你们保持相关性并增加找到工作的机会。

那走吧

Peter 点头 GIF

此处省略内容

Composio 👑 - 专为AI代理打造的集成平台

我可以打赌(别当真!但你应该明白我的意思)人工智能代理肯定会大受欢迎。新产品将完全由代理来操控。但要让代理真正发挥作用,你得把它们连到外部应用上。

如果你正在创建一个AI工程代理,它要真正有用,就必须能访问GitHub、Jira、Slack等平台。Composio 就能做到这一点。我们支持连接超过250个应用程序,以自动化复杂任务。

我们管理身份验证(比如 OAuth),所以你可以构建关键的功能。

这是一个充满活力的新兴市场,有很多机会。掌握了它,你的简历会瞬间更吸引人。

使用 Composio 很简单,上手很容易。

    pip install composio-core  # 这个命令用于安装composio-core包

切换到全屏,切换回正常模式

添加 GitHub 插件。

添加 `composio` 到 github

全屏模式 退出全屏

Composio会帮你处理用户的认证和授权。

这里是如何使用GitHub的功能来点赞或收藏一个项目。

    from openai import OpenAI
    from composio_openai import ComposioToolSet, App

    openai_client = OpenAI(api_key="******OPENAIKEY******")

    # 初始化 Composio 工具集
    composio_toolset = ComposioToolSet(api_key="**\\\\*\\\\***COMPOSIO_API_KEY**\\\\*\\\\***")

    ## 步骤 4
    # 获取已经配置好的 GitHub 工具
    actions = composio_toolset.get_actions(actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER])

    ## 步骤 5
    my_task = "在 GitHub 上给 ComposioHQ/composio 仓库点星"

    # 创建一个聊天完成请求来决定该做什么
    response = openai_client.chat.completions.create(
    model="gpt-4-turbo",
    tools=actions, # 传递之前获取的动作
    messages=[
        {"role": "system", "content": "你是一个友好的助手."},
        {"role": "user", "content": my_task}
      ]
    )

全屏 退出全屏

用这个Python程序通过代理来执行给定的指令。

Composio 这个平台与诸如 LangChain、LlamaIndex 和 CrewAi 等知名框架合作。

更多详情请参阅官方文档页面,如需更多复杂示例,请参阅仓库中的示例

来看一个GIF图

给 Composio 仓库点个赞⭐

此处省略

2. UV by Astral — 由 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
    # 通过curl下载并执行安装脚本 (Download and execute the installation script via curl)

全屏切换(进入/退出)

使用 pip 来...

在命令行中输入以下命令来安装uv库:pip install uv

切换到全屏 退出全屏

uv 能管理项目依赖和环境,支持锁定文件、工作空间等,类似于 ryepoetry

    $ uv init example
    初始化项目 `example` 位于 `/home/user/example` 目录下

    $ cd example

    $ uv add ruff
    创建虚拟环境 .venv
    解析 2 个包,耗时 170ms
       构建 example @ file:///home/user/example
    准备 2 个包,耗时 627ms
    安装 2 个包,耗时 1ms
     + example==0.1.0 (from file:///home/user/example)
     + ruff==0.5.7

    $ uv run ruff check
    所有检查都通过了!

切换到全屏模式 退出全屏

可以查看项目文档开始了解项目。

根据需要下载相应版本的 Python

    $ uv venv --python 3.12.0
    使用 Python 3.12.0
    虚拟环境的位置是:.venv
    使用 `source .venv/bin/activate` 来激活

    $ uv run --python pypy@3.8 -- python --version
    Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, 2022年12月29日, 11:45:30)
    [PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
    输入 `help`、`copyright`、`credits` 或 `license` 获取更多信息。
    >>>>

全屏 退出全屏

在这个文件夹里指定要用的Python版本:

` $ uv python pin pypy@3.11 将.python-version设置为pypy@3.11`。


进入全屏模式,退出全屏模式

参见[Python安装指南](https://docs.astral.sh/uv/guides/install-python/)开始使用。

![UV 图](https://imgapi.imooc.com/675a7fb209f428b308000282.jpg)
给 UV 仓库点个赞✨

此处省略内容

## 3\. [Pydantic](https://docs.pydantic.dev/latest/) - 使用 Python 类型注解来验证数据

哇哦!这是我用Python时用过的超棒工具之一,它和Numpy、Sklearn等一起,让Python保持了它的热度。

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

如果你想在 Javascript 生态系统中寻找类似的东西,可以探索一下 Zod。

使用 `pip` 或 `uvupdater` 安装它。

在uv中添加pydantic

全屏模式,退出全屏

这里有个简单的例子。
从 datetime 模块导入 datetime
从 typing 导入 List, Optional
从 pydantic 导入 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(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123

全屏模式 退出全屏

查看[文档](https://docs.pydantic.dev/latest/)以了解更多信息。

![Pydantic GIF](https://imgapi.imooc.com/675a7fb40a39db9008000259.jpg)

[查看 Pydantic 代码库 ⭐](https://github.com/pydantic/pydantic)

(此处为空白或待补充)

## 4\. [Turborepo](https://turbo.build/) - 高性能的 JavaScript 捆绑器

这在 Javascript 和 Typescript 生态系统中就像 UV 一样的单仓库工具。同样,Turborepo 同样是用 Rust 编写的,以提供高性能。

单存储库在很多方面都很优秀,但在扩展规模时会遇到困难。每个工作区都有自己的测试套件、代码规范检查和构建流程,而单一的单存储库可能需要执行许多任务需要执行。

TurboRepo 可以解决你单一代码库的扩展性问题。通过远程缓存,它会存储你所有任务的成果,这意味着你的 CI 永远不需要重复执行相同任务。

查看[文档](https://turbo.build/repo/docs)了解更多内容。

大型企业,包括 Vercel、Netflix 和 Adobe 等公司,已广泛采用它。

![Turbo仓库](https://imgapi.imooc.com/675a7fb40984a91f08000483.jpg)

探索 Pydantic 仓库页面 ⭐

* * *

## 5\. [RabbitMQ](https://www.rabbitmq.com/) — 消息和流代理(若不熟悉,RabbitMQ 是一种消息和流处理的中介)

注:括号内的内容为解释性说明,可依据目标受众的实际需求决定是否保留。

如果你正在构建需要异步通信的任何项目,RabbitMQ 是一个绝佳的选择。它是消息代理领域中最全能的解决方案,支持多种协议,例如 AMQP、MQTT 和 STOMP。这使得它非常适合微服务、事件驱动架构和实时应用等场景。

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

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

**安装`amqplib`库**:

npm install amqplib

运行此命令以安装amqplib模块

进入全屏模式。退出全屏模式。

**生产者**:把消息发到队列里。
const amqp = require('amqplib');

const sendMessage = async () => {
    const queue = 'task_queue';
    const message = 'Hello, RabbitMQ!';

    try {
        // 连接到 RabbitMQ
        const connection = await amqp.connect('amqp://localhost');
        const channel = await connection.createChannel();

        // 确认消息队列存在
        await channel.assertQueue(queue, { durable: true });

        // 向消息队列发送消息(Message)
        channel.sendToQueue(queue, Buffer.from(message), { persistent: true });
        console.log(`[x] 发送了: ${message}`);

        // 关闭连接并退出
        setTimeout(() => {
            connection.close();
            process.exit(0);
        }, 500);
    } catch (error) {
        console.error('错误:', error);
    }
};

sendMessage();

全屏 退出全屏

**消费者**:正在从队列中接收消息。
const amqp = require('amqplib');

const receiveMessage = async () => {
    const queue = 'task_queue';

    try {
        // 连接到 RabbitMQ
        const connection = await amqp.connect('amqp://localhost');
        const channel = await connection.createChannel();

        // 创建或确认队列存在
        await channel.assertQueue(queue, { durable: true });

        console.log(`[x] 等待在 ${queue} 队列中接收消息。按 CTRL+C 结束`);

        // 消费消息
        channel.consume(
            queue,
            (msg) => {
                if (msg !== null) {
                    console.log(`[x] 收到消息: ${msg.content.toString()}`);
                    channel.ack(msg);
                }
            },
            { noAck: false }
        );
    } catch (error) {
        console.error('错误信息:', error);
    }
};

receiveMessage();

切换到全屏模式,退出全屏

查看[文档](https://www.rabbitmq.com/tutorials)获取更多信息。

![RabbitMQ GIF](https://imgapi.imooc.com/675a7fb60a58055108000259.jpg)

[查看 RabbitMQ 代码库 ⭐ (GitHub仓库)](https://github.com/rabbitmq)

* * *

## 6\. [Sentry](https://sentry.io/welcome/) \- 一个应用监控工具

如果你在乎应用的稳定性,Sentry 是必不可少的。它是追踪错误、性能问题和应用健康状况的终极解决方案,提供实时监控功能。无论你是在为 Web、移动设备还是桌面开发,Sentry 都能无缝集成,帮助你更快更明智地排查问题。

凭借详细的堆栈跟踪、breadcrumb 和用户上下文,您拥有了找到问题的根本原因所需的一切。但这还不仅如此——Sentry 还提供了诸如事务跟踪和自定义指标等特性,帮助您监控应用程序性能,包括事务跟踪和自定义指标等功能。

查看[文档](https://docs.sentry.io/platforms/javascript/)了解更多详情。

![哨兵图片 如图所示](https://imgapi.imooc.com/675a7fb60921cf4408000428.jpg)

[了解 Sentry 仓库:](https://github.com/getsentry/sentry)

* * *

## 7\. [Grafana](https://grafana.com/) \- 以前所未有的方式可视化您的数据

如果你需要监控指标、日志或追踪,Grafana 是首选的工具。它是一个开源平台,能够将原始数据转化为美观且交互性强的仪表板,使你能够轻松了解系统状况。

Grafana可以与多种数据源集成,如Prometheus、Elasticsearch、InfluxDB、AWS CloudWatch等。

这肯定是一个你几乎都能在所有组织中找到的工具。

![Grafana 图表](https://imgapi.imooc.com/675a7fb709f4d06608000317.jpg)(点击查看大图)

[查看 Grafana 仓库 ⭐](https://github.com/grafana/grafana)

* * *

## 8\. [LangGraph](https://www.langchain.com/langgraph) - 构建状态驱动的AI代理

如果你曾经希望有更好的方法来管理具有复杂工作流程的AI代理,LangGraph就是你的答案。它是一个用于构建能够轻松处理多步骤流程、决策制定和上下文保留的状态化AI代理的框架。它可以帮助你轻松处理多步骤流程、做出决策并保留上下文。

我们自己在LangGraph中构建了一个[SWE代理](https://github.com/ComposioHQ/composio/tree/master/python/swe/agent),它在[SWE-Bench](https://www.swebench.com/)基准测试中得分48.60分,这个测试AI编码代理效果的基准。

请安装LangGraph软件。
npm install @langchain/core @langchain/langgraph @langchain/openai @langchain/community

全屏 / 退出全屏

将 Tavily 和 OpenAI 的 API keys 加入环境变量。
// agent.ts

// 瑞典条 - 重要提示 - 在这里添加你的API密钥。请注意不要发布它们。
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";

// 定义代理可用的工具
const agentTools = [new TavilySearchResults({ maxResults: 3 })];
const agentModel = new ChatOpenAI({ temperature: 0 });

// 初始化内存以在图运行之间保持状态持久化
const agentCheckpointer = new MemorySaver();
const agent = createReactAgent({
  llm: agentModel,
  tools: agentTools,
  checkpointSaver: agentCheckpointer,
});

// 现在可以开始使用了!
const agentFinalState = await agent.invoke(
  { messages: [new HumanMessage("旧金山当前的天气如何")] },
  { configurable: { thread_id: "42" } },
);

console.log(
  agentFinalState.messages[agentFinalState.messages.length - 1].content,
);

const agentNextState = await agent.invoke(
  { messages: [new HumanMessage("纽约呢?")] },
  { configurable: { thread_id: "42" } },
);

console.log(
  agentNextState.messages[agentNextState.messages.length - 1].content,
);

全屏模式 退出全屏

请阅读下面的内容来理解[示例](https://langchain-ai.github.io/langgraphjs/tutorials/quickstart/#how-does-it-work)的流程。同时,也可以查阅[文档](https://langchain-ai.github.io/langgraphjs/)获取更多信息。

![LangGraph GIF](https://imgapi.imooc.com/675a7fb90a6edb6806000194.jpg)

[给 LangGraph 仓库点个赞⭐](https://github.com/langchain-ai/langgraphjs)

* * *

## 第九 Selenium \- 浏览器自动化工具

每个技术专业人士在其职业生涯中某个时候都会遇到浏览器自动化。许多公司使用 Selenium 来进行这样的任务,包括网页自动化、测试动态网页内容等。

Selenium 让开发者能够通过编程方式控制网页浏览器,从而模拟用户的行为,比如点击按钮、填写表单或在各个页面间跳转。

它可以在多种编程语言中使用

用 `pip` 安装 Selenium。

在命令行中运行此命令来安装Selenium库
pip install Selenium


切换到全屏,退出全屏

你需要为基于Chromium的浏览器(如Chrome)安装Chrome的Webdriver,为Firefox安装Gecko驱动程序。

这里有一个使用Selenium和ChromeDriver的例子:
from selenium import webdriver

# 设置 ChromeDriver 的路径
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# 打开一个网页
driver.get("<https://www.example.com>")

# 执行一些操作,比如点击按钮或查找元素
print(driver.title)  # 打印页面标题

# 关闭浏览器窗口
driver.quit()

更多详情,请参阅我们的[官方文档](https://www.selenium.dev/documentation/)


进入全屏模式 关闭全屏模式

![Selenium](https://imgapi.imooc.com/66f8b1280a430e0a08000286.jpg)

[浏览 Selenium 仓库](https://github.com/SeleniumHQ/selenium)⭐

* * *

谢谢阅读。也可以说说您工作中常用的其他工具。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消