如何用 Qwen3-Coder 与 Milvus 在 ai-engineering-hub 跑通代码问答应用?
2026/9/17 15:46:56 网站建设 项目流程

如何用 Qwen3-Coder 与 Milvus 在 ai-engineering-hub 跑通代码问答应用?

【免费下载链接】ai-engineering-hubIn-depth tutorials on LLMs, RAGs and real-world AI agent applications.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-engineering-hub

这篇文章的目标是在 ai-engineering-hub 仓库中从零跑通chat-with-code代码问答应用:把 Milvus 向量数据库装到本地,安装 Python 依赖,启动 Streamlit 应用,加载一个 GitHub 仓库,然后对仓库代码提问并拿到经过校验的回答。应用通过 OpenRouter 调用 Qwen3-Coder 模型生成答案,用 HuggingFace 的BAAI/bge-base-en-v1.5生成向量,并用 Cleanlab Codex 对回答做可信度校验。应用代码在 chat-with-code/app.py,操作依据来自 chat-with-code/README.md。

准备条件:环境与前置检查

项目 chat-with-code/pyproject.toml 声明的运行约束:

  • Python>=3.12
  • 使用uv管理依赖(项目自带uv.lock,README 给出的安装命令就是uv sync
  • 关键依赖:llama-index>=0.12.52及其 OpenRouter、Milvus、HuggingFace Embedding 子包,pymilvus>=2.5.14streamlit>=1.47.0cleanlab-codex>=1.0.25

开始前还需要准备:

  • Docker:Milvus 以 Docker 容器方式安装启动;
  • 两个 API Key:OpenRouter Key(调用 Qwen3-Coder)和 Cleanlab Codex Key(校验回答),应用侧边栏内提供了各自的获取入口链接,应用启动前先在侧边栏填写;
  • git可执行文件:点击 Load 后应用会克隆目标仓库到本地。

第一步:启动 Milvus 向量数据库

README 给出了官方安装脚本,先下载再启动。注意这两条命令的副作用:第一条从网络下载 Milvus 的standalone_embed.sh脚本,第二条会在本机用 Docker 启动 Milvus 容器,因此需要 Docker 已安装并在运行。

curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh bash standalone_embed.sh start

应用侧的连接目标是http://localhost:19530,见 app.py 中create_index函数:它创建dim=768overwrite=True的 Milvus 集合,所以 standalone 服务需要在本机 19530 端口可用。

第二步:安装依赖并启动应用

chat-with-code目录下同步依赖:

uv sync

然后启动 Streamlit 应用:

streamlit run app.py

在浏览器打开http://localhost:8501即可访问应用(README 给出的访问地址)。

首次使用:加载仓库并提问

在页面左侧边栏依次填写:

  1. Codex API Key(密码输入框);
  2. OpenRouter API Key(密码输入框);
  3. GitHub Repository URL:要提问的仓库地址。

点击Load后,应用依次执行(对应 app.py 中process_button分支):

  • 用 Codex Key 初始化 Cleanlab Codex 项目(项目名Chat-with-Code,并创建一个 access key);
  • 把仓库克隆到应用当前工作目录(若目录已存在则直接读取,不再克隆);
  • 按文件类型切分:.md用 Markdown 解析器;.py.ipynb按 Python 解析;.js按 JavaScript 解析;.ts按 TypeScript 解析;
  • 将向量索引用BAAI/bge-base-en-v1.5的嵌入写入 Milvus;
  • qwen/qwen3-coder:free作为 LLM(max_tokens=1024),用similarity_top_k=4和流式输出构建查询引擎。

加载完成后,在页面下方的输入框提问。每个回答以流式方式输出,答案下方显示Trust Score,并带一个状态标记(逻辑见 chat-with-code/validation.py):

  • 分数 ≥ 0.8:绿色标记;
  • 分数 0.5 到 0.8:黄色标记;
  • 分数 < 0.5:红色标记。

Codex 校验结果会决定最终展示的内容:如果答案被升级给专家且存在expert_answer,展示专家答案;如果触发 guardrail,展示固定回退语 "I'm sorry, I couldn't find an answer for that — can I help with something else?";否则展示 RAG 的原始回答。

如何确认跑通

按 README 与代码中的提示判断:

  • Load 成功后,侧边栏显示Data loaded successfully!!,页面显示Ready to Chat!
  • 提问后收到流式回答,且回答下方出现 Trust Score;
  • 各类报错信息的含义(均来自 app.py 的实际输出):
    • Please provide OpenRouter API Key/Please provide Codex API Key:对应 Key 未填;
    • Invalid owner or repository:仓库 URL 格式不符合 GitHub 仓库地址;
    • Error occurred while cloning the repository, carefully check the url:克隆失败,需要检查 URL;
    • No data found, check if the repository is not empty!:仓库中没有被支持的代码或文档文件。

可选路径:改用 notebook 跑同一流程

chat-with-code/notebook.ipynb 提供与 Streamlit 应用相同的流水线,适合在 Jupyter 中逐步执行。使用前需要替换两处占位符:

  • “Codex Client Setup” 单元格:把os.environ["CODEX_API_KEY"]的值替换为你的 Codex Key;
  • LLM 配置单元格:把<your_openrouter_api_key_here>替换为你的 OpenRouter Key,模型名保持qwen/qwen3-coder:free

notebook 中示例查询使用的仓库地址和输出文本(例如关于 Model 名称的回答、各项 validation score)都是文档示例,你的仓库不同,输出不会与示例一致。

已知限制

  • 只索引.md.py.ipynb.js.ts五类文件,其他文件类型不会被加载;
  • LLM 固定为qwen/qwen3-coder:free,嵌入模型固定为BAAI/bge-base-en-v1.5(768 维),与 Milvus 集合维度对应;
  • 每次 Load 都会新建一个集合(集合名为chat_with_docs_加随机十六进制后缀),代码中overwrite=True
  • 如果 Milvus 索引创建失败,app.py 会走except分支,回退到内存版VectorStoreIndex——此时仍可查询,但没有用到 Milvus,若你确认目标是向量库路径,应回到 Milvus 服务状态上排查;
  • 仓库会被克隆到应用运行目录,多次 Load 不同仓库会留下多个目录,属于预期行为。

验证方式与上述提示一致:看到Data loaded successfully!!Ready to Chat!、能收到带 Trust Score 的流式回答,即表示该应用已从安装走到首次可用。

【免费下载链接】ai-engineering-hubIn-depth tutorials on LLMs, RAGs and real-world AI agent applications.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-engineering-hub

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询