每个开发人员都应该知道的 9 个开源 AI 编码工具🎯

792 阅读10分钟

1730945451315.jpg

#编程#人工智能#开源#Python

人工智能正在改变我们所熟知的世界,对于开发者来说,拥抱人工智能可以显著提高生产力。它可以帮助您更快地发布新功能、为您编写测试用例,甚至发现代码中的漏洞。

互联网提供了很多工具,但找到​​合适的工具需要花费时间和精力。因此,我整理了一份 AI 工具列表,以帮助您成为更好的开发人员。

彼得点头 GIF


1. SWE-Kit 👑:用于编码代理的开源无头 IDE

作为一名开发人员,我一直想构建定制的 AI 工具,以便与代码库进行交流、自动将更改推送到 GitHub 并自动发布新功能。老实说,在此之前我找不到任何工具。

SWE-Kit 是一款无头 IDE,具有 LSP、代码索引和代码 RAG 等功能。它提供灵活的运行时,可在任何 Docker 主机或远程服务器上与专用编码工具包一起运行。

这些工具包包括与 GitHub、Jira 和 Slack 等平台的集成,以及 Composio 提供支持的文件搜索和代码索引等工具。

使用 SweKit 构建的编码代理在经过验证的SWE 基准测试中获得了令人印象深刻的 48.60% 的得分。

这个全面的基准测试包括来自 Django、Scikit-learn、Flask、Sympy 等流行库的一些真实 GitHub 问题。

动态图片SweKit SWE-bench 统计数据

它与所有主要的 LLM 框架兼容,例如 LangChain、CrewAI、Autogen 和 LlamaIndex。

您可以构建并部署自己的。

  • GitHub PR Agent:用于自动审核 GitHub PR。
  • SWE 代理:您可以构建一个 SWE 代理来自动编写功能、单元测试、文档等。
  • 与代码库聊天:您可以使用代码索引工具构建与任何远程或本地代码库聊天的工具。

安装swekitcomposio-core快速开始。

pip install compsio-core swekit

安装您选择的任何框架。

pip install crewai composio-crewai

现在,让我们创建一个具有 GitHub 访问权限的编码代理。

composio add github

生成新的代理脚手架。

swekit scaffold crewai -o swe_agent

运行代理。

cd swe_agent/agent
python main.py

这将使用 Docker 作为默认工作区环境。有关更多信息,请参阅文档

SweKit 图片

访问网站并在 Product Hunt 上表示支持⭐


2. Composio:AI集成和工具平台

Composio 是一个开源平台,为 AI 代理提供第三方集成。它提供 Linear、Slack、GitHub、Jira、Asana 和其他可用于构建定制 AI 代理的集成。

例如,

  • 您可以构建全面的代理来与 Slack 和 Discord 上的用户进行交互。回复查询、指导他们完成支持流程或安排后续操作。
  • 您可以构建编码代理,以通过 Jira 票证自动修复 GitHub 中的错误。
  • 构建代理来编写代码文档。

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

为 Composio 存储库加星标 ⭐


3. Aider——人工智能结对编程者

如果您正在寻找一对程序员来帮助您更快地交付代码,那么这是完美的选择。

Aider 可让您将程序与 LLM 配对,以编辑本地 GitHub 存储库中的代码。您可以启动新项目或使用现有的 GitHub 存储库。

您可以像这样快速开始:

pip install aider-chat

# Change the directory into a git repo
cd /to/your/git/repo

# Work with Claude 3.5 Sonnet on your repo
export ANTHROPIC_API_KEY=your-key-goes-here
aider

# Work with GPT-4o on your repo
export OPENAI_API_KEY=your-key-goes-here
aider

有关更多详细信息,请参阅 安装说明 和其他 文档

帮助 GIF

为 Aider 仓库加注星标 ⭐


4. Mentat - GitHub 原生编码代理

Mentat 是一种 AI 工具,旨在帮助您通过命令行解决任何编码任务。

与 Copilot 不同,Mentat 可以协调跨多个文件和位置的编辑。与 ChatGPT 不同,Mentat 从一开始就了解项目的背景 — 无需复制和粘贴!

它有一个专用的 CLI 工具可以直接与代码库通信,并可以根据终端中的提示生成和执行 Python 代码。

按照步骤运行 Mentat。首先,创建一个 Python 虚拟环境。

# Python 3.10 or higher is required
python3 -m venv .venv
source .venv/bin/activate

克隆您的 GitHub 存储库。

git clone https://github.com/AbanteAI/mentat.git
cd mentat

# install with pip in editable mode:
pip install -e .

添加 OpenAI 或任何 LLM 提供商的 API 密钥。

export OPENAI_API_KEY=<your key here>

从项目目录中运行 Mentat。Mentat 使用 git,因此如果你的项目尚未设置 git,请运行 git init。然后你可以使用以下命令运行 Mentat:

mentat <paths to files or directories>

有关 Mentat 的更多信息,请查看文档

记住我 GIF

为 Mentat 存储库加注星标 ⭐


5. AutoCodeRover –自主程序改进

AutoCodeRover 提供了完全自动化的解决方案来解决 GitHub 问题,包括错误修复和功能添加。

通过将 LLM 与先进的分析和调试功能相结合,AutoCodeRover 可以优先考虑补丁位置,以有效地创建和实施补丁。

首先,设置 OPENAI_API_KEY 或任何其他密钥,

export OPENAI_KEY=sk-YOUR-OPENAI-API-KEY-HERE

构建并启动docker镜像:

docker build -f Dockerfile -t acr .
docker run -it -e OPENAI_KEY="${OPENAI_KEY:-OPENAI_API_KEY}" -p 3000:3000 -p 5000:5000 acr

查看他们的官方存储库以获取更多信息。

暂无 GIF

为 Auto Code Rover 存储库加注星标 ⭐


5. Continue—— 领先的人工智能代码助手

你一定听说过 Cursor IDE,这是一款流行的 AI 驱动的 IDE;Continue 与它类似,但在 Apache 许可下开源。

它具有高度可定制性,可让您添加任何语言模型以进行自动完成或聊天。这可以极大地提高您的工作效率。您可以将 Continue 添加到 VScode 和 JetBrains。

主要特色

  • 在侧边栏中聊天以了解和迭代代码
  • 自动完成功能可在您输入时接收内联代码建议
  • 编辑以修改代码而无需离开当前文件
  • 为日常用例建立快捷方式的操作

更多信息请查看 文档

继续 GIF


6. Qodo Merge:自动拉取请求分析工具

Codium AI 的这款开源工具可自动执行 GitHub Pull 请求审查、分析、反馈和建议。它可以帮助您提高 Pull 请求的效率,并且与 GitLab 和 BitBucket 等其他版本控制系统兼容。

它既有自托管解决方案,也有云托管解决方案。

对于自托管解决方案,您将需要一个 OpenAI API 密钥和一个 GitHub 或 GitLab 访问令牌。

要在本地使用它,请安装该库。

pip install pr-agent

然后,使用下面的脚本运行相关工具。

确保填写必填参数(user_token,  openai_key,  pr_url,  command):

from pr_agent import cli
from pr_agent.config_loader import get_settings

def main():
    # Fill in the following values
    provider = "github" # GitHub provider
    user_token = "..."  # GitHub user token
    openai_key = "..."  # OpenAI key
    pr_url = "..."      # PR URL, for example 'https://github.com/Codium-ai/pr-agent/pull/809'
    command = "/review" # Command to run (e.g. '/review', '/describe', '/ask="What is the purpose of this PR?"', ...)

    # Setting the configurations
    get_settings().set("CONFIG.git_provider", provider)
    get_settings().set("openai.key", openai_key)
    get_settings().set("github.user_token", user_token)

    # Run the command. Feedback will appear in GitHub PR comments
    cli.run_command(pr_url, command)

if __name__ == '__main__':
    main()

您还可以使用 Docker 镜像或从源代码运行。文档中有更多关于 Qodo 合并的内容。

Qodo AI 图像

为 Qodo Merge 存储库加注星号 ⭐


7. OpenHands:人工智能软件开发代理平台

OpenHands 是领先的 AI 代理开源平台之一,也是 Devin 的直接竞争对手。OpenHands 代理可以构建新的绿地项目、向现有代码库添加功能、调试问题等等。

最近,他们的经纪人还以 53% 的成绩荣登 SWE-bench 排行榜榜首。

要使用 OpenHands,您需要 Docker 版本 26.0.0+ 或 Docker Desktop 4.31.0+ 和 Linux、Mac 或 WSL。

拉取 docker 镜像并运行容器。

docker pull docker.all-hands.dev/all-hands-ai/runtime:0.12-nikolaik

docker run -it --rm --pull=always \
    -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.12-nikolaik \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -p 3000:3000 \
    --add-host host.docker.internal:host-gateway \
    --name openhands-app \
    docker.all-hands.dev/all-hands-ai/openhands:0.12

运行上述命令后,你会发现 OpenHands 在 http://localhost:3000运行。

启动 OpenHands 后,您将看到一个设置模式。选择 LLM Provider 和 LLM Model 并输入相应的 API Key。您可以随时通过选择 UI 的Settings按钮来更改这些。

如果您的型号未列出,请切换高级模式并手动输入。

OpenHands 截图

它们提供了四种使用 Agent 的方法:交互式 GUI、命令行界面 (CLI) 以及通过无头模式和 GitHub Actions 进行非交互式使用的选项。每种方法都有其优点。有关更多信息,请参阅文档

AllHands 人工智能

为 OpenHands 存储库加星标 ⭐


8. Sourcegraph 的 Cody:IDE 编码助手

Cody 是 Sourcegraph 的一个开源项目,旨在直接在 IDE 中增强您的编码工作流程 - 无论是 VS Code、JetBrains 还是其他。Cody 利用高级搜索作为编码助手,从本地和远程代码库中提取上下文。这样就可以直接从 IDE 无缝访问任何规模的 API、符号和使用模式的详细信息。

使用 Cody,您可以与您的代码库聊天,进行内联编辑,获取代码建议,并享受自动完成等功能,所有这些功能都是为了帮助您更快、更有效地编写代码而量身定制的。

您可以简单地将其安装在您的 IDE 上并开始使用。有关更多信息,请查看文档

CodyAI图像

为 Cody 仓库加注 ⭐


9. VannaAI:与 SQL 数据库聊天

我害怕编写 SQL 查询,但与此同时,它是现代软件开发中最关键的技术之一。几乎所有公司都严重依赖 SQL 与关系数据库进行交互。但正如他们所说,总有一个适用于它和 SQL 数据库的 AI 工具;它就是 Vanna AI。

它是一个开源工具,可以让您使用自然语言与 SQL 数据库聊天。

Vanna 的工作分为两个简单的步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,返回可设置为在您的数据库上自动运行的 SQL 查询。

VannaAI工作流程


开始使用 Vanna 非常简单。使用 安装pip

pip install vanna
# The import statement will vary depending on your LLM and vector database. This is an example for OpenAI + ChromaDB

from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore

class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        OpenAI_Chat.__init__(self, config=config)

vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})

# See the documentation for other options

您可以使用自定义数据训练模型。

根据您的使用情况,您可能需要或不需要运行这些vn.train命令。

使用 DDL 语句进行训练。

vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS my-table (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        age INT
    )
""")

提出问题

vn.ask("What are the top 10 customers by sales?")

您将获得 SQL 输出。

SELECT c.c_name as customer_name,
        sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales
FROM   snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o
        ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c
        ON o.o_custkey = c.c_custkey
GROUP BY customer_name
ORDER BY total_sales desc limit 10;

请参阅 文档 以了解更多详细信息。

VannaAI 图片

为 Vanna 存储库加注 ⭐

【智答专家您身边免费的GPT4.0人工智能Ai助手,文本生成,问答,多语言支持, 性化建议,图片生成,代码纠正等等。

原文出处:dev.to/composiodev…