文件最后提交记录最后更新时间
1 年前
1 年前
1 年前
1 年前
7 个月前
1 年前
README

Cangjie Code Assistant

本方案深度整合 Cangjie Magic 框架 的原生 RAG 技术能力,通过对仓颉语言官方文档、语法规则、典型代码示例等核心语料的系统性梳理与结构化处理,构建起专属知识图谱。在此基础上,将本地知识库与高性能大语言模型进行深度耦合,成功实现仓颉编程语言编码助手的本地化部署,为鸿蒙生态开发者提供了具备精准语义理解、实时编码辅助、多场景适配能力的智能开发工具。

1 安装仓颉环境

1.1 仓颉SDK下载

前往仓颉官网,下载对应环境仓颉SDK,版本:0.53.18

下载中心-仓颉

1.2 安装

根据官网的指导文档,进行对应版本的安装与环境配置。

安装仓颉工具链

2 编译运行

2.1 配置代码

本项目依赖 Cangjie Magic 框架作为运行基础,需要自己手动解压 /third_party路径下的CangjieMagic.tar文件。

2.2 配置模型和 key

修改 src/config.cj 文件中的相关配置。

2.2.1 模型配置

config.cj 中的 MODELConfig.env 按照如下规则修改:

模型配置使用格式 <service>:<model>,当前支持如下的模型服务商。

服务商名称 示例 配置说明 服务 URL 配置
阿里云 dashscope:qwen-plus DASHSCOPE_API_KEY DASHSCOPE_BASE_URL,默认 https://dashscope.aliyuncs.com/compatible-mode/v1
DeepSeek deepseek:deepseek-chat DEEPSEEK_API_KEY DEEPSEEK_BASE_URL,默认 https://api.deepseek.com
火山方舟 ark:doubao-lite-4k ARK_API_KEY ARK_BASE_URL,默认 https://ark.cn-beijing.volces.com/api/v3
Llama.cpp llamacpp 无需配置模型名称和 API Key LLAMACPP_BASE_URl,默认 http://localhost:8080
Ollama ollama:phi-3 无需配置 API Key OLLAMA_BASE_URl,默认 http://localhost:11434
OpenAI openai:gpt-4o OPENAI_API_KEY OPENAI_BASE_URL,默认 https://api.openai.com/v1
SiliconFlow siliconflow:deepseek-ai/DeepSeek-V3 SILICONFLOW_API_KEY SILICONFLOW_BASE_URL,默认 https://api.siliconflow.cn/v1
智谱 AI zhipuai:glm-4 ZHIPUAI_API_KEY ZHIPUAI_BASE_URL,默认 https://open.bigmodel.cn/api/paas/v4

火山方舟模型示例:

public let MODEL = "ark:DeepSeek-V3"
public func buildAgent(chatView: ChatView): Agent {
    Config.env['ARK_API_KEY'] = '<your api key>'
    ...
}

DeepSeek 模型示例:

public let MODEL = "deepseek:deepseek-chat"
public func buildAgent(chatView: ChatView): Agent {
    Config.env['DEEPSEEK_API_KEY'] = '<your api key>'
    ...
}

2.2.2 配置 Embedding 模型

config.cj 中,buildEmbeddingModel() 方法中的ModelConfig里的内容进行修改:

  • service: String, 服务名称,如"openai"或"ollama",根据自己的 embedding 模型服务方选择。
  • kind: String, 模型类型,共 chatembeddingimage 三种模式,此处我们选择 embedding
  • name: String, 模型名称,如 gpt-4otext-embedding-ada-002bge-m3:567m等。
  • apiKey: String, API密钥,默认为空字符串。
  • baseURL: String, 基础URL,默认为空字符串。

本地 Ollama Embedding 模型示例:

ModelConfig(service:"ollama", kind:"embedding", name:"bge-m3:567m", baseURL:"http://127.0.0.1:11434")

2.3 依赖

2.3.1 Faiss

本项目选取 Faiss 作为向量数据库工具。需要注意的是,Faiss 依赖于平台特定的共享库文件,需根据运行环境进行适配:

  • Windows 环境:需部署 faiss.dll 与 faiss_c.dll 动态链接库
  • Linux X86 环境:需部署 libfaiss.so 与 libfaiss_c.so 共享对象文件

以上两种环境所需的文件已随代码提供,无需再构建,目前已打包放入third_party/CangjieMagic.tar/ffi_libs中。

若需要再其他环境中运行,请参考 Faiss 官方的指导文档编译出对应的文件,并放入third_party/CangjieMagic/ffi_libs中。

2.3.2 切块后的语料文件

当前项目已对同步开源的仓颉语料库完成了语料切块,文件路径: resources/cangjiedocSummary_w_exampleCode_w_docURL.jsonl

2.4 运行

2.4.1 构建本地化向量数据库

首次构建,在命令行中输入 cjpm run --name cjca --run-args "--build",项目将根据 resources 下的语料文件构建对应的向量数据库。由于数据较多,本次构建将花费较长的时间。

此步骤需构建一次,后续若语料文件无变化,无需重复构建。如需更换其他语料文件,则修改 src/main.cj 中的 filePath 即可。

2.4.2 查询问题

在命令行中输入 cjpm run --name cjca --run-args "--query xxxxxx",其中 xxxxxx 为要进行的提问。

Linux X86 运行示例:

cjpm run --name cjca --run-args "--query 仓颉中的 Argopt 方法怎么使用?"

需要注意的是,目前仅 Linux X86 环境支持中文提问。Windows 平台由于未知原因暂无法使用中文提问,进可用英文提问,但可以要求模型使用中文回答。目前正在定位问题原因,后续会持续跟进并修复

Windows 运行示例:

cjpm run --name cjca --run-args "--query How to use Argopt in cangjie? answer me in Chinese."

3 仓颉介绍

3.1 仓颉语言

仓颉编程语言是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。主要应用于鸿蒙原生应用及服务应用等场景中,为开发者提供良好的编程体验。 详细的开发指南可以参见官网: 仓颉编程语言开发指南

3.2 仓颉 Magic 框架

基于仓颉编程语言构建的 LLM Agent 开发框架,其主要特点包括:Agent DSL、支持 MCP 协议,支持模块化调用,支持任务智能规划。 仓颉 Magic 开发指南

欢迎加入 Cangjie Magic 开发者讨论者群组,一起交流碰撞创意想法,构建最具创意的Agent应用!