Ollama Copilot:您的人工智能编码助手

Ollama Copilot 是一款先进的人工智能编码助手,适用于 Visual Studio Code (VSCode),旨在通过提供针对当前项目环境的智能代码建议和配置来提高工作效率。它利用 LLM 的最新进展来了解编码需求,提供精确的代码片段、配置和见解,以简化开发工作流程。

Workflow Graph
│
├── Start: Generate Retrieval Query
│   └── Retrieve Documents
│       ├───[Documents Found?]
│       │   ├── No ─────[Under Max Attempts?]
│       │   │           └── Yes ──> Transform Retrieval Query ────┐
│       │   │           └── No ───┐                               │
│       │   └── Yes ───────────────────────────────────┐          │
│       └───[Loop Back After Transformation] <─────────┼──────────┘
│                                                      │
├── Grade Documents <──────────────────────────────────┘
│   └───[Documents Relevant?]
│       ├─── No ──> Web Search ──┐
│       └─── Yes ──────────────────────────────────────┐
│                                                      │
├── Context Management <───────────────────────────────┘
│       ├───[Context Exceeds Limit?]
│       │   ├── Yes ──> Summarize Context ─────────────┐
│       │   └── No ────────────────────────────────────┼──────────┐
│       └───[Loop Back If Summarization Needed] <──────┘          │
│                                                                 │
├── Generate <────────────────────────────────────────────────────┘
│   └───[Need To Extract Code?]
│       ├─── Yes ──> Extract Code ──┐
│       └─── No ───────────────────────────────────────┐
│                                                      │
└── END <──────────────────────────────────────────────┘

见解:

  • 生成检索查询:首先根据用户输入创建文档检索查询。
  • 检索文档:获取文档;如果不成功,则优化查询或评估文档相关性。
  • 转换检索查询:优化查询以改进检索,然后重试文档获取。
  • 等级文件:评估文档相关性;不相关的结果会导致网络搜索,而相关的结果则转移到上下文管理。
  • 网络搜索:在需要时使用网络信息补充上下文。
  • 上下文管理:准备输出信息;过大的上下文会触发上下文摘要。
  • 总结上下文:减少上下文大小,如有必要,循环回去进行进一步细化。
  • 生成:根据上下文和用户查询完成输出,结束工作流程。

特征

  • 智能建议:利用 LLM 进行上下文感知代码建议。
  • 自我纠正 RAG:通过优化检索和生成提高查询的相关性和准确性。
  • 模型定制:选择适合您的编码风格或项目要求的 AI 模型。
  • 弹性搜索向量存储:管理文档嵌入以增强上下文理解。
  • 项目结构监控:有效跟踪项目变化以确保建议保持最新。
  • 文件解析和嵌入:从文件生成嵌入,存储在 Elastic Search 中以便快速访问。
  • 工作池:通过优化的文件处理确保流畅的性能。
  • 系统模板:提供可定制的交互模板以符合您的工作流程。
  • Web 搜索集成:通过 Tavily AI 扩展信息检索范围 [可选]。

先决条件

在安装和使用 Ollama Copilot 之前,请确保您的开发环境中具有以下设置:

  • VSCode 版本:1.86.0 或更高版本。
  • Ollama 服务:您的系统上必须安装并运行 Ollama 服务。安装说明如下。
  • 弹性搜索实例:向量存储所需,方便进行语义相似性搜索。

设置指南

  • Ollama 服务安装:按照以下说明在您的系统上安装并运行 Ollama 服务。
  • 基本 URL 配置:通过 VSCode 命令面板设置 Ollama 服务 URL。
  • 扩展激活:通过命令面板启用 Ollama Copilot。
  • 选择模型:通过命令面板选择主模型。
  • 运行弹性搜索节点:按照以下说明在您的系统上运行弹性搜索节点。
  • Elastic Search URL 配置:通过 VSCode 命令面板设置 Elastic Search URL。
  • 选择嵌入模型:通过命令面板选择嵌入模型。
  • 生成嵌入:为向量存储生成文档嵌入。
  • 调用建议:输入copilot以接收 AI 驱动的编码建议。
  • 自定义设置:定制 Copilot 以适合您的项目的选项。

安装

macOS 和 Linux

对于 macOS 和 Linux 用户,可以通过以下步骤本地安装 Ollama:

  • 下载Ollama:前往Ollama官方网站下载该软件。
  • 安装依赖项:确保您的系统上安装了所有必要的依赖项。
  • 运行 Ollama:使用终端通过执行以下命令启动 Ollama 服务:
      ./ollama --serve
  • 运行 Elastic Search Node :按照官方 Elastic 文档中所述设置 Elastic Search Server 。
Windows、macOS 和 Linux (Docker)

对于喜欢 Docker 的用户或 Windows 用户:

  • 先决条件:确保您的系统上安装了 Docker。请访问Docker 文档获取安装说明。

  • 安装 Ollama 服务:

    这将启动 Ollama 服务,11434默认将其绑定到本地主机的端口。

  • 运行弹性搜索节点:

    • 打开终端或命令提示符。
    • 通过运行以下命令来拉取 Elasticsearch Docker 映像:
      docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.2
    • 使用以下命令启动单节点 Elasticsearch 容器:
      docker run -p 9200:9200 -e "discovery.type=single-node" -e "xpack.security.enabled=false" -e "xpack.security.http.ssl.enabled=false" docker.elastic.co/elasticsearch/elasticsearch:8.12.2
      此命令启动 Elasticsearch 容器并公开端口9200。安全功能被有意禁用以简化设置,并且此配置仅适用于本地开发环境。
  • 通过运行以下命令验证 Elasticsearch 实例是否启动:

    curl -X GET "http://localhost:9200"

配置

在 VS Code 中配置 “Ollama Copilot” 扩展以连接您的 Ollama 服务:

{
  "copilot.baseUrl": "http://localhost:11434",
  "copilot.model": "llama2",
  "copilot.modelTemperature": "0.2", // string
  "copilot.systemPrompt": "Comprehensive coding assistant...",
  "copilot.cpuCores": 4,
  "copilot.elasticSearchUrl": "http://127.0.0.1:9200",
  "copilot.vectorStoreIndexName": "copilot_vector_store",
  "copilot.tavilySearchApiKey": "<<TAVILY_API_KEY>>",
  "copilot.maxTokenLimit": 4096,
  "copilot.embeddingsModel": "nomic-embed-text",
  "copilot.maxRetrievalAttempts": 1,
  "copilot.documentRetrievalThreshold": 0.001,
  "copilot.printDebuggingLogs": false,
  "copilot.kNearestNeighbors": 3,
  "copilot.similarityMeasure": "cosine",
  "copilot.outputType": "code"
}
扩展设置

此扩展提供了以下设置:

  • copilot.baseUrl:设置 Ollama 服务的基本 URL,允许扩展与您的 Ollama 服务实例进行通信。
  • copilot.model:选择用于生成代码建议的 AI 模型。可随时更新选择以满足您的项目要求。
  • copilot.modelTemperature:调整AI代码建议的创造性和多样性,实现代码方案创新性和实用性的平衡。
  • copilot.systemPrompt:定义 AI 使用的提示,指导它生成符合您的特定项目环境和编码标准的响应。
  • copilot.cpuCores:配置专用于处理散列和嵌入生成等任务的 CPU 核心数量,优化扩展的性能。
  • copilot.elasticSearchUrl:指定 Elastic Search 实例的 URL,替代 Redis 实现高级向量存储和检索功能。
  • copilot.vectorStoreIndexName:Elastic Search Vector Store 中存储和检索文档嵌入的索引的名称。
  • copilot.tavilySearchApiKey:集成 Tavily AI 网络搜索功能,提供用于验证搜索查询的 API 密钥。
  • copilot.maxTokenLimit:设置 LLM 接受的输入令牌数的上限,确保高效处理而不会直接影响响应大小。
  • copilot.embeddingsModel:选择用于生成文档和查询嵌入的模型,增强 AI 建议的上下文感知。
  • copilot.maxRetrievalAttempts:限制检索相关文档的尝试次数,优化搜索过程和响应时间。
  • copilot.documentRetrievalThreshold:设立被认为相关的文档的最低分数阈值,确保高质量的代码建议。
  • copilot.printDebuggingLogs:支持将调试日志输出到控制台,帮助排除故障并了解AI的决策过程。
  • copilot.kNearestNeighbors:确定 Elasticsearch 中使用的 k-最近邻 (k-NN) 引擎,影响搜索结果的广度和相关性。
  • copilot.similarityMeasure:表示 Elasticsearch 向量存储中使用相似度度量来确定嵌入的接近度。
  • copilot.outputType:确定 AI 生成的输出类型,“代码”指定输出应为与开发上下文相关的代码片段或配置。另一个选项是“文本”。

注意:

为了实现高效的文档检索和增强的建议,​​请确保代码注释良好。这些注释可用于生成精确的嵌入,从而显著提高所提供建议的相关性。

作者:Jeebiz  创建时间:2024-07-12 23:27
最后编辑:Jeebiz  更新时间:2024-08-29 20:41