AutoCoder 快速使用指南

文章介绍了如何通过Auto-Coder快速安装并使用命令行接口,支持基于Web版本模型的代码生成,如Byzer-LLM。文章详细展示了如何配置模型、参数传递和使用场景,包括部署大模型、查询和代码优化,以及与搜索引擎和第三方包的集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

昨天发了 命令行版Devin 来了: Auto-Coder 后有不少人私信我讨论。那么能让大家快捷的用起来是第一要务。所以从昨天晚上到今天,我光速给 Byzer-LLM/AutoCoder 发了两个新版本,来支持今天这篇文章。

安装

安装部分其实比较简单,安装如下 python 库:

conda create --name autocoder python==3.10.11
conda activate autocoder
## github访问困难,可以访问如下url:
## git clone https://gitee.com/allwefantasy/auto-coder.git
git clone https://github.com/allwefantasy/auto-coder.git
pip install -r requirements.txt
## if you want to use private/open-source models, uncomment this line.
# pip install -U vllm
pip install -U byzerllm
pip install -U auto-coder


ray start --head

现在,就可以开始使用 AutoCoder了。

基于Web版本模型

比如你手头有 Claude3, ChatGPT, Kimi等产品的Web端的订阅或者免费使用权限,而没有这些模型的 API 订阅, 那么这个时候 AutoCoder 等价于一个 Code Pack 工具,帮你把代码和问题一起打包成一个文本文件,方便你拖拽到这些产品的界面里,然后帮你进行代码生成。

可以用 auto-coder 查看一些常见命令选项。

auto-coder -h

我来说一个实际案例,我想给 byzer-llm 项目增加一个命令行支持。下面是我写的yaml配置文件:

source_dir: /home/winubuntu/projects/byzer-llm/saas
target_file: /home/winubuntu/projects/byzer-llm/output.txt


urls: https://raw.githubusercontent.com/allwefantasy/byzer-llm/master/README.md


search_engine: bing
search_engine_token: ENV {{BING_SEARCH_TOKEN}}


query: |
  在 src/byzerllm 目录下新增一个 byzerllm.py 文件。在该文件中使用args 实现命令行支持。参考 README.md 中的使用方法来增加命令行参数。
  主要支持:
  1. 部署模型相关参数
  2. 运行推理相关阐述


  比如部署模型,一般代码是这样的:
  
  ```python
  ray.init(address="auto",namespace="default",ignore_reinit_error=True)
  llm = ByzerLLM()


  llm.setup_gpus_per_worker(4).setup_num_workers(1)
  llm.setup_infer_backend(InferBackend.transformers)


  llm.deploy(model_path="/home/byzerllm/models/openbuddy-llama2-13b64k-v15",
            pretrained_model_type="custom/llama2",
            udf_name="llama2_chat",infer_params={})
  ```
  此时你需要有 address, num_workers, gpus_per_worker, model_path, pretrained_model_type, udf_name, infer_params 这些参数可以通过命令行传递。


  最终形态是:


  byzerllm deploy --model_path /home/byzerllm/models/openbuddy-llama2-13b64k-v15 --pretrained_model_type custom/llama2 --udf_name llama2_chat --infer_params {}


  同理推理是也是。比如一般推理代码是:


  ```python
  llm_client = ByzerLLM()
  llm_client.setup_template("llama2_chat","auto")


  v = llm.chat_oai(model="llama2_chat",conversations=[{
      "role":"user",
      "content":"hello",
  }])


  print(v[0].output)
  ```
  此时你需要有 model, conversations 这些参数可以通过命令行传递。


  此时你的命令行形态是:
  
  byzerllm query --model llama2_chat --query "hello" --template "auto"

urls 指定了大模型需要参考的文档,source_dir 自定了大模型需要阅读的代码,而 target_file 则指定了生成的prompt的位置。query则是我具体要大模型帮我做的事情。现在执行这个配置文件

auto-coder --file test.yml

然后将 output.txt 拖拽到大模型web界面,点击执行,大模型就开始干活了。

4ad394464a20d318af91d8f21865507f.png


可以看到,他做的很细致,会告诉你新的文件路径是什么,以及对应的代码。你只需要拷贝黏贴到你的项目里即可。

基于大模型 API

我们推荐你申请 Qwen https://dashscope.console.aliyun.com/model 免费token量大,效果也还不错。你申请了 Token之后,使用如下命令在你本机部署它:

byzerllm deploy  --pretrained_model_type saas/qianwen \
--infer_params saas.api_key=xxxxxxx saas.model=qwen-max \
--model qianwen_chat

运行完成后,你相当于有个叫做 qianwen_chat 的模型实例了。可以通过下面命令来验证是否部署成功:

byzerllm query --model qianwen_chat --query "你好"

如果能正常输出,就表示成功。如果失败,你需要先卸载,再重新部署。卸载的方式:

byzerllm undeploy --model qianwen_chat

准备好了模型你可以做两件事:

1. 让大模型直接执行,然后把结果写到 target_file 里。
2. 解锁一些新功能,比如索引等,urls 内容整理和抽取等

我们一个一个来看。

首先第一个例子是,我希望使用刚才部署的模型实例 qianwen_chat 帮优化一个程序问题。但是因为这个项目非常大,而 qianwen_chat的最大输入是 6000个字符,所以我不能把项目所有文件都给到大模型,需要智能减少大模型的输入。下面是一个比较合理的配置:

project_type: py
source_dir: /home/winubuntu/projects/byzer-llm
target_file: /home/winubuntu/projects/byzer-llm/output.txt


model: qianwen_chat
model_max_length: 2000
model_max_input_length: 6000
anti_quota_limit: 5


skip_build_index: false


search_engine: bing
search_engine_token: ENV {{BING_SEARCH_TOKEN}}


query: |
  优化byzerllm.py 中StoreNestedDict,使其能解析标准的 KEY="VALUE" 或者 KEY=VALUE 的字符串

在这里,我们设置了我们要用的模型,以及最大的输出和输入。此外,我们还通过 skip_build_index 开启了索引功能。

这样,当我们第一次运行这个文件的时候,他会对你的项目文件构建索引,然后过滤出和你当前问题相关的代码进行prompt的生成。

auto-coder --file optimize_command_line.yml

在这个命令里,我们仅仅是利用 qwen_chat 模型生成合适大小的prompt(构建索引,过滤合适的代码,如果配置了urls,会对urls内容进行格式化抽取等等)。如果你希望 qwen_chat 也能直接生成代码,可以加一个参数:

auto-coder --file optimize_command_line.yml --execute

这个时候 target_file 里的内容就是已经给你生成好的代码而不是prompt了。

所以可以看到,我们可以通过我们配置的模型来让 auto-coder更加只能得生成prompt,然后真正写代码的,还是让 web 版本的模型。我们当然也可以直接让你配置的模型直接完成代码书写,这个可以通过 --execute 参数控制。

让大模型同时阅读你的代码,第三方包的代码,以及API文档,然后回答你的问题和编写代码

source_dir: /home/winubuntu/projects/byzer-llm/src/byzerllm/saas
target_file: /home/winubuntu/projects/byzer-llm/output.txt
py_packages: openai
urls: https://raw.githubusercontent.com/allwefantasy/byzer-llm/master/README.md


query: |
  参考 src/byzerllm/saas/qianwen 中的实现,重新实现 offical_openai。注意 offical_openai 中
  使用的是openai 这个模块,你需要学习这个模块的使用方法,保证正确的使用其功能。


这里,你的源码是通过 source_dir 配置的,你的第三方包是通过 py_packages 配置的,你的文档是通过 urls 配置的。最后你让大模型基于这些信息,回答你的问题(query)。模型能力强的,生成效果很惊艳。如果项目太大,你可以像前面一样配置一个模型,实现只能过滤代码:

source_dir: /home/winubuntu/projects/byzer-llm/src/byzerllm/saas
target_file: /home/winubuntu/projects/byzer-llm/output.txt
py_packages: openai
urls: https://raw.githubusercontent.com/allwefantasy/byzer-llm/master/README.md


model: qianwen_chat
model_max_length: 2000
model_max_input_length: 6000
anti_quota_limit: 5


skip_build_index: false


query: |
  参考 src/byzerllm/saas/qianwen 中的实现,重新实现 offical_openai。注意 offical_openai 中
  使用的是openai 这个模块,你需要学习这个模块的使用方法,保证正确的使用其功能。

其实,我们还支持对搜索引擎的集成,可以让大模型为了完成你的目标,具备下面的能力:

1. 阅读你的项目源码

2. 阅读第三方库

3. 阅读你提供的文档链接

4. 找搜索要更多的一些参考文档

这个我们后续会单独一篇来介绍。

结束语

还等什么,赶快动手吧。遇到任何问题可以在github留言。

迎使用autoCode =================== 项目介绍 ------------------- > **autoCode介绍** > - autoCode是一个代码生成工具。基于velocity模板引擎,采用SpringMVC + mybatis + FDUI + mysql > - 此工具只负责生成代码文件,不会生成完整功能的应用程序. > **其特点主要有** > - 用户登陆 - 每个用户有他自己独立的数据库连接配置和模板配置; > - 数据源配置 - 可以配置多个数据源,多种数据库类型(目前支持Mysql,MSServer数据库,可以扩展); > - 模板配置 - 定义自己的模板,采用velocity模板语法.这样可以根据模板来生成不同的代码,如POJO,Dao,mybatis配置文件等; > - 操作简单 - 生成代码只需三步:1. 选择数据源;2. 选择表;3. 选择模板。 > - 提供简单的客户端操作,能将代码直接生成到本地 > **部署程序步骤:** > 1. Maven构建eclipse工程,运行Maven命令:mvn eclipse:eclipse,完成后导入到eclipse中 > 2. 导入数据库(MYSQL),SQL文件在项目根目录下,名为autoCode.sql,运行里面的内容即可 > 3. 修改数据库连接参数,配置文件在src/main/resources/config.properties > 4. 启动项目,运行Maven命令:mvn jetty:run > 5. 浏览器输入http://localhost:8088/autoCode 登录用户名密码均为admin 端口默认用了8088,如需修改,前往pom.xml,找到maven-jetty-plugin插件的port参数. jetty安装配置 ------------------- 从 http://download.eclipse.org/jetty/ 中下载jetty 文件,命令 unzip 解压zip文件 在eclipse help->install new software 中通过地址http://run-jetty-run.googlecode.com/svn/trunk/updatesite/ 安装jetty插件 安装好插件后,可以通过 点击项目 -》右键-> run configuration-->jetty webapp 项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值