推荐一款强大的开源编程助手Cursor

科技   2024-08-24 11:53   上海  
Cursor https://www.cursor.com/)是一个功能强大的开源助手,允许我们借助大型语言模型 (LLM)能力,通过交互来完成代码补全、函数级代码生成等工作。
Cursor 理解代码库,从代码库中获取最匹配的代码、引用特定文件或文档。只需一键即可使用模型的代码

只需按下 Tab 键:Cursor 通过预测下一个编辑,让我们轻松浏览、更改代码

以自然语言编辑代码,Cursor 允许我们使用指令编写代码。只需简单的提示即可更新整个类或函数。

Cursor 的架构设计为可扩展的,非常适合集成本地 LLM。该过程将涉及创建一个与本地 LLM 接口的自定义插件或模块,使 Cursor 能够与模型通信并无缝利用其功能。这意味着我们可以利用最先进的LLM能力,而无需依赖云服务或将数据暴露给第三方服务器。
将 Cursor 与本地 LLM 一起使用的主要优势之一是隐私和数据安全性。通过将数据和计算保存在本地计算机上,我们可以确保敏感信息永远不会离开受控环境。这对于处理机密或专有数据的应用程序尤为重要。而且本地 LLM 提供了在特定代码库或域上微调模型的灵活性。这种量身定制的方法可以带来更准确、更相关的代码建议,因为模型会适应特定项目或组织内使用的独特编码样式、模式和术语。

此外,从长远来看,在本地运行 LLM 可能更具成本效益,因为我们无需支付云计算资源或 API 使用费。一旦设置了必要的硬件和软件,我们就可以根据需要多次运行 LLM,而不会产生额外费用。在 Cursor 中支持本地 LLM 将为开发人员和组织解锁广泛的用例和好处:

  • 增强隐私和安全性:通过将代码库和语言模型保持在本地,组织可以确保敏感信息永远不会离开其受控环境,从而降低数据泄露或未经授权访问的风险。

  • 定制代码帮助:在特定代码库或域上微调本地 LLM 可以根据项目或组织的独特编码风格和模式量身定制更准确、更相关的代码建议。

  • 离线功能:本地 LLM 使开发人员即使在离线或断开连接的环境中也能利用 AI 驱动的编码帮助,确保不间断的生产力。

  • 合规性:某些行业或组织可能受到严格的数据隐私法规的约束,因此本地 LLM 成为采用 AI 驱动的编码工具的必要条件。

  • 成本优化:虽然基于云的 LLM 可能很昂贵,尤其是对于大规模使用,但本地 LLM 可能提供更具成本效益的解决方案,特别是对于拥有大量计算资源的组织。

使用本地 LLM 设置 Cursor

要开始使用 Cursor 和本地 LLM,请按照以下步骤操作:

  • 安装 Cursor:访问 Cursor 网站 (https://cursor.com) 并下载适用于自己操作系统的最新版本的 Cursor IDE。

  • 获取 LLM:需要获取与 Cursor 兼容的本地 LLM 模型。有多种选项可供选择,包括 GPT-J、GPT-NeoX 等开源模型,或 Anthropic 或 OpenAI 等提供商的专有模型。

  • 配置 Cursor:获得 LLM 模型后,您需要配置 Cursor 以使用它。打开 Cursor 首选项并导航到“AI”部分。在这里,您可以选择使用本地 LLM 的选项,并提供必要的详细信息,例如模型路径和任何必需的配置文件。

设置 Cursor 和本地 LLM 后,可以开始在编码工作流程中利用 AI 功能。以下是一些关键功能和用例。

代码补全和建议

使用 Cursor 等 AI 驱动的代码编辑器的主要好处之一是它能够提供智能代码完成和建议。当您键入时,Cursor 将分析您的代码并根据上下文提供相关建议,从而帮助您更快、更准确地编写代码。

# Example: Cursor providing code suggestions
def calculate_area(shape, dimensions):
if shape == "rectangle":
length, width = dimensions
area = length * width
return area
elif shape == "circle":
radius = dimensions[0]
area = 3.14 * radius ** 2
return area
# Cursor can suggest adding an "else" clause or handling other shapes

自然语言代码生成

“Cmd-K”功能允许我们使用自然语言指令编写代码。这种强大的功能使我们能够通过简单地提供描述所需更改的提示来更新整个类或函数。

# Example prompt: "Refactor the calculate_area function to use a match statement instead of if-elif"

# Cursor generates the refactored code:
def calculate_area(shape, dimensions):
area = match shape:
case "rectangle":
length, width = dimensions
area = length * width
case "circle":
radius = dimensions[0]
area = 3.14 * radius ** 2
case _:
raise ValueError(f"Invalid shape: {shape}")
return area

代码理解和检索

使用本地 LLM,Cursor 可以帮助我们更好地理解和检索代码库。我们可以询问有关特定文件、函数或类的问题,Cursor 将根据代码分析提供相关信息。

# Example query: "What does the calculate_area function do?"

# Cursor's response:
The `calculate_area` function takes two arguments: `shape` (a string representing the shape) and `dimensions` (a list or tuple containing the dimensions of the shape). It calculates the area based on the provided shape and dimensions.

For a rectangle, it expects `dimensions` to be a list or tuple with two elements (length and width), and it calculates the area by multiplying them.

For a circle, it expects `dimensions` to be a list or tuple with one element (radius), and it calculates the area using the formula `pi * radius^2`.

If an invalid shape is provided, it raises a `ValueError` with an appropriate error message.

与 Anakin AI 的 API 集成

虽然 Cursor 的本地 LLM 功能非常强大,但可以通过与 Anakin AI 的 API 集成来进一步增强 AI 驱动的编码体验。Anakin AI 提供全面的 API 服务,可以将 AI 功能无缝集成到应用程序中。

Here's how you can leverage Anakin AI's API with Cursor:以下是将 Anakin AI 的 API 与 Cursor 结合使用的方法:

注册 Anakin AI:访问 Anakin AI 网站 (https://anakin.ai) 并创建一个帐户。

创建应用程序:在 Anakin AI 仪表板中,创建适合需求的新应用程序。可以从各种应用程序类型中进行选择,例如用于文本生成的快速应用程序或用于对话式 AI 的聊天机器人应用程序。

生成 API 访问令牌:按照 Anakin AI 提供的步骤为您的应用程序生成 API 访问令牌。

与 Cursor 集成:在 Cursor 中,可以通过提供 API 访问令牌和其他必要的详细信息来配置与 Anakin AI 的 API 的集成。这将使 Cursor 能够利用 Anakin AI 的 AI 模型和功能以及当地的 LLM。

通过 Anakin AI 集成,可以从文本生成、翻译和对话式 AI 等附加功能中受益,从而进一步提高编码生产力和能力。

示例代码:将 Anakin AI 的 API 与 Cursor 结合使用

下面是一个示例,说明如何在 Cursor 中使用 Anakin AI 的 API 来生成代码文档:

import requests

# Replace with your Anakin AI API access token
ANAKIN_AI_API_TOKEN = "your_api_token_here"

# Replace with your Anakin AI app ID
ANAKIN_AI_APP_ID = "your_app_id_here"

def generate_code_documentation(code_file):
url = f"https://api.anakin.ai/v1/quickapps/{ANAKIN_AI_APP_ID}/runs"
headers = {
"Authorization": f"Bearer {ANAKIN_AI_API_TOKEN}",
"X-Anakin-Api-Version": "2024-05-06",
"Content-Type": "application/json",
}
data = {
"inputs": {
"Code": code_file.read(),
},
"stream": True,
}

response = requests.post(url, headers=headers, json=data)
response.raise_for_status()

documentation = ""
for chunk in response.iter_content(chunk_size=None):
if chunk:
documentation += chunk.decode()

return documentation

# Example usage
with open("my_code.py", "r") as code_file:
documentation = generate_code_documentation(code_file)
print(documentation)

在此示例中,我们定义了一个 generate_code_documentation 函数,该函数将代码文件作为输入。它向 Anakin AI API 发送 POST 请求,并将代码文件的内容作为输入。API 生成代码文档,然后由函数返回。

通过将 Anakin AI 的 API 与 Cursor 集成,可以利用 AI 的力量来自动执行代码文档、重构等任务,从而进一步提高生产力和编码体验。

结论

Cursor 与本地 LLM 和 Anakin AI 的 API 的集成为开发人员开辟了一个充满可能性的世界,使他们能够利用 AI 的力量,同时保持对其代码库和数据隐私的控制。凭借代码补全、自然语言代码生成、代码理解和 API 集成等功能,Cursor 使开发人员能够非常高效地工作。

无论您是在处理小型项目还是大型企业应用程序,利用 Cursor 与本地 LLM 和 Anakin AI 的 API 都可以彻底改变您的编码工作流程,简化开发流程,并将生产力和创新水平提升到新的水平。

软件工程3.0时代
由于大模型(LLM)正在改变着千行百业,软件工程(SE)更是首当其冲,迎来软件工程3.0新时代:模型驱动研发、模型驱动运维。本公众号将致力于研究SE3.0时代的软件研发新范式、理论与方法,介绍SE3.0时代的工具与实践。
 最新文章