背景

我现在有两类内容,一个是大量的 auto-coder 示例配置,每次我用的时候都需要去找示例,然后复制黏贴。

c97f36cb26343d74c36e492dfbc6c5a3.jpeg

第二类是各种启动模型的脚本:

f80305a2b9d07fef5b3120aa2aba2f92.jpeg

需要关闭或者开启一个模型,都需要查找然后复制黏贴,比较麻烦。

这个时候,我就在想如何把这些内容构建成知识库,让问答小助手帮到自己,甚至小助手还可以直接帮我执行一些脚本。于是有了 AutoCoder 的文档功能。

安装

conda create --name autocoder python=3.10.11
conda activate autocoder

pip install -U auto-coder
ray start --head

最后一步是启动一个 daemon 管理进程。

接着,因为知识库需要存储(向量检索+全文检索),所以我们还需要安装一个Stroage。安装也很简单:

# export JAVA_HOME=/Users/allwefantasy/Library/Java/JavaVirtualMachines/openjdk-21/Contents/Home
byzerllm storage start

注意,你系统需要装有 JDK21。如果JDK21不是你默认 SDK,可以在启动命令前临时export JAVA_HOME。系统会在启动期间下载一些库和文件,请确保网络畅通。

这就是所有安装部署了。

准备模型

文档构建需要依赖大模型和embedding模型。所以我们用 byzerllm 命令启动他们。

qianwen_chat:

byzerllm deploy --pretrained_model_type saas/qianwen \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 2 \
--infer_params saas.api_key=${MODEL_QIANWEN_TOKEN}  saas.model=qwen-max \
--model qianwen_chat

qianwen_emb:

byzerllm deploy --pretrained_model_type saas/qianwen \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 2 \
--infer_params saas.api_key=${MODEL_QIANWEN_TOKEN}  saas.model=text-embedding-v2 \
--model qianwen_emb

如果你用 OpenAI,可以这样:

gpt3_5_chat:

byzerllm deploy --pretrained_model_type saas/openai \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 1 \
--infer_params saas.api_key=${MODEL_OPENAI_TOKEN} saas.model=gpt-3.5-turbo-0125 \
--model gpt3_5_chat

gpt_emb:

byzerllm deploy --pretrained_model_type saas/openai \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 1 \
--infer_params saas.api_key=${MODEL_OPENAI_TOKEN} saas.model=text-embedding-3-small \
--model gpt_emb

如果你想用本地模型(包括向量模型),参考:

  1. https://github.com/allwefantasy/byzer-llm

  2. 祝威廉:014 - AutoCoder 如何使用 Ollama

构建索引

auto-coder doc build --model qianwen_chat \
--emb_model qianwen_emb \
--source_dir 你存放文档的目录

你也可以把上面的参数放到一个 YAML 文件里去:

source_dir: /Users/allwefantasy/projects/deploy_models
model: qianwen_chat
emb_model: qianwen_emb

然后这样运行:

auto-coder doc build --file actions/build_doc.yml

终端问答助手

auto-coder doc query --model qianwen_chat \
--emb_model qianwen_emb --source_dir . \
--query "请给出 qianwen_chat  的启动语句"

输出:

面是输出:

=============RESPONSE==================


2024-04-17 14:01:50.287 | INFO     | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 0, Generated tokens count: 0
byzerllm deploy --pretrained_model_type saas/qianwen \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 2 \
--infer_params saas.api_key=${MODEL_QIANWEN_TOKEN}  saas.model=qwen-max \
--model qianwen_chat

=============CONTEXTS==================
/Users/allwefantasy/projects/deploy_models/run.txt
/Users/allwefantasy/projects/deploy_models/run.sh

如果你想多轮对话:

auto-coder doc chat --model qianwen_chat \
--emb_model qianwen_emb --source_dir .

把 query 换成 chat ,就可以在终端直接聊天:

cb5b83fcd7def05cf3a5e3b3b1a81104.jpeg

Web/App 界面问答助手

首先,用AutoCoder 启动一个服务:

auto-coder doc serve --model qianwen_chat \
--emb_model qianwen_emb --source_dir .

默认会监听 8000端口。

下载一个桌面版聊天程序: https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/releases

双击运行后,做如下配置:

631b2c9555f8abb425bb6fcf8e4d3072.jpeg
  1. 自定义模型名这里,你需要修改成 qianwen_chat, 也就是你启动时给模型取的名字。

  2. 模型那块,你要选择你自定义模型名字,表示启用这个模型。

  3. 模型供应商,我们是兼容 OpenAI的接口的,所以你选择 OpenAI 即可。

现在可以开聊了:

9fc48e0acb022104b11fb0a62fbfeb24.jpeg

会自动执行命令的助手

auto-coder doc query --model qianwen_chat --emb_model qianwen_emb \
--source_dir . \
--query "帮我启动 qianwen_chat" \
--execute

相比前面的小助手,末尾加一个参数 --execute, 这个时候小助手会自动执行部署命令:

=============RESPONSE==================


2024-04-17 13:22:33.788 | INFO     | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 0, Generated tokens count: 0
byzerllm deploy --pretrained_model_type saas/qianwen \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 2 \
--infer_params saas.api_key=${MODEL_QIANWEN_TOKEN}  saas.model=qwen-max \
--model qianwen_chat

=============CONTEXTS==================
/Users/allwefantasy/projects/deploy_models/run.txt
/Users/allwefantasy/projects/deploy_models/run.sh


=============EXECUTE==================
2024-04-17 13:22:45.916 | INFO     | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 1184, Generated tokens count: 136
steps=[ExecuteStep(code='byzerllm deploy --pretrained_model_type saas/qianwen --cpus_per_worker 0.001 --gpus_per_worker 0 --num_workers 2 --infer_params saas.api_key=${MODEL_QIANWEN_TOKEN} saas.model=qwen-max --model qianwen_chat', lang='shell', total_steps=1, current_step=1, cwd=None, env=None, timeout=None, ignore_error=False)]
Shell Command:
byzerllm deploy --pretrained_model_type saas/qianwen --cpus_per_worker 0.001 --gpus_per_worker 0 --num_workers 2 --infer_params saas.api_key=${MODEL_QIANWEN_TOKEN} saas.model=qwen-max --model qianwen_chat
Output:
Command Line Arguments:

--------------------------------------------------

command             : deploy

ray_address         : auto

num_workers         : 2

gpus_per_worker     : 0.0

cpus_per_worker     : 0.001

model_path          : 

pretrained_model_type: saas/qianwen

model               : qianwen_chat

infer_backend       : vllm

infer_params        : {'saas.api_key': '', 'saas.model': 'qwen-max'}

file                : None

--------------------------------------------------

模型 qianwen_chat 已经部署过了

可以看到,byzerllm 会提示 qianwen_chat 已经部署过了。

最后

实际上这里只是一个锦上添花的功能,该功能的实际作用是和搜索引擎的价值是一样的,就是自动帮你检索一些你的文档,然后在你写代码的时候,帮你扩充相关信息,从而让大模型帮你更好的生成代码。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐