AutoCoder 可以通过你指定的文档,以及自动到搜索引擎进行搜索来获取信息,从而更好的帮你生成代码,但我们不满足,我们还希望能够对用户本地的文档进行索引,从而自动获取一些信息,帮助你本地的项目更好的迭代,为此我们推出了一个本地的 Rag 知识库。
结果没想到,解决了我一个以前一直很苦恼的问题,因为我经常要测试各种模型,这就需要经常启停一些模型,为此,我原来是这么做的,把我常用的一些模型的启动,关闭语句放在一个文件里。
这个文件我一直打开,然后有需要就拷贝黏贴到命令行里。
其实很繁琐。今天,我突然发现,我完全通过自然语言来操控他了,打开命令行,执行下面语句:
auto-coder doc query --file ~/model.yml \
--query "先关闭kimi_chat,再启动"
其中 model.yml 文件是一个固定文件:
source_dir: /Users/allwefantasy/projects/doc_repo
model: qianwen_chat
emb_model: qianwen_emb
下面是执行结果:
=============RESPONSE==================
2024-04-17 16:37:50.255 | INFO | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 0, Generated tokens count: 0
先执行以下命令停止(关闭)kimi_chat模型模板:
```bash
byzerllm undeploy --model kimi_chat
```
然后执行以下命令启动kimi_chat模型模板:
```bash
byzerllm deploy --pretrained_model_type saas/official_openai \
--cpus_per_worker 0.001 \
--gpus_per_worker 0 \
--num_workers 2 \
--infer_params saas.api_key=${MODEL_KIMI_TOKEN} saas.base_url="https://api.moonshot.cn/v1" saas.model=moonshot-v1-32k \
--model kimi_chat
```
=============CONTEXTS==================
/Users/allwefantasy/projects/doc_repo/deploy_models/run.txt
/Users/allwefantasy/projects/doc_repo/deploy_models/run.sh
完全对了。当然,如果还要你复制黏贴执行,那就太麻烦了,我们可以直接让他执行:
auto-coder doc query --file ~/model.yml \
--query "先关闭kimi_chat,再启动" \
--execute
这时候会输出执行日志:
=============EXECUTE==================
2024-04-17 16:33:57.882 | INFO | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 1372, Generated tokens count: 146
steps=[ExecuteStep(code='byzerllm undeploy --model kimi_chat', lang='bash', total_steps=-1, current_step=-1, cwd=None, env=None, timeout=None, ignore_error=False), ExecuteStep(code='byzerllm deploy --pretrained_model_type saas/official_openai --cpus_per_worker 0.001 --gpus_per_worker 0 --num_workers 2 --infer_params "saas.api_key=${MODEL_KIMI_TOKEN} saas.base_url=\'https://api.moonshot.cn/v1\' saas.model=moonshot-v1-32k" --model kimi_chat', lang='bash', total_steps=-1, current_step=-1, cwd=None, env=None, timeout=None, ignore_error=False)]
Shell Command:
byzerllm undeploy --model kimi_chat
Output:
Command Line Arguments:
--------------------------------------------------
command : undeploy
ray_address : auto
model : kimi_chat
file : None
--------------------------------------------------
模型 kimi_chat 卸载成功
Error: 2024-04-17 16:34:02,439 INFO worker.py:1540 -- Connecting to existing Ray cluster at address: 127.0.0.1:6379...
2024-04-17 16:34:02,450 INFO worker.py:1715 -- Connected to Ray cluster. View the dashboard at 127.0.0.1:8265
--------------------
Shell Command:
byzerllm deploy --pretrained_model_type saas/official_openai --cpus_per_worker 0.001 --gpus_per_worker 0 --num_workers 2 --infer_params "saas.api_key=${MODEL_KIMI_TOKEN} saas.base_url='https://api.moonshot.cn/v1' saas.model=moonshot-v1-32k" --model kimi_chat
Output:
可以看到系统自动执行了两条命令。最后我们来测试下:
auto-coder doc query \
--file ~/model.yml \
--query "查询 kimi_chat,输入: 你好" \
--execute
输出如下:
============RESPONSE==================
2024-04-17 17:04:04.177 | INFO | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 0, Generated tokens count: 0
使用以下命令查询模型模板 kimi_chat,并输入内容“你好”:
byzerllm query --model kimi_chat --query '你好'
=============CONTEXTS==================
/Users/allwefantasy/projects/doc_repo/deploy_models/run.sh
/Users/allwefantasy/projects/doc_repo/deploy_models/run.txt
=============EXECUTE==================
2024-04-17 17:04:16.264 | INFO | autocoder.utils.llm_client_interceptors:token_counter_interceptor:16 - Input tokens count: 1139, Generated tokens count: 67
steps=[ExecuteStep(code="byzerllm query --model kimi_chat --query '你好'", lang='shell', total_steps=1, current_step=1, cwd=None, env=None, timeout=None, ignore_error=False)]
Shell Command:
byzerllm query --model kimi_chat --query '你好'
Output:
Command Line Arguments:
--------------------------------------------------
command : query
ray_address : auto
model : kimi_chat
query : 你好
template : auto
file : None
--------------------------------------------------
你好!有什么我可以帮助你的吗?
Error: 2024-04-17 17:04:20,547 INFO worker.py:1540 -- Connecting to existing Ray cluster at address: 127.0.0.1:6379...
2024-04-17 17:04:20,562 INFO worker.py:1715 -- Connected to Ray cluster. View the dashboard at 127.0.0.1:8265
--------------------
终于告别各种复制黏贴执行命令啦。
这个功能背后的逻辑其实很简单:
用 AutoCoder 构建知识库,我把我之前包含了启动脚本的那个文本灌进了知识库。
AutoCoder会根据知识库的内容来生成对我的回复,然后执行。AutoCoder 支持 Shell/Python的自动执行。
更多信息参考这篇文章:https://zhuanlan.zhihu.com/p/693000407
欢迎关注 AutoCoder: https://github.com/allwefantasy/auto-coder