002- 用 AutoCoder 添加和修改代码

科技   其他   2024-03-21 18:12   浙江  

实际上 AutoCoder 最适合的场景是修改代码,因为它最原始的功能是把源码+你指定的文档+搜索引擎搜集到的资料和你的需求生成一个prompt给到大模型。

此外纠正大家一个观点, AutoCoder 不是一句话给你创建一个网站抑或一个大型的项目。我们是帮助研发或者产品更快的迭代产品。

不过我们还是从最开始项目啥都没有开始,现在,我们用 AutoCoder 创建一个 web server

source_dir: /tmp/t-pytarget_file: /home/winubuntu/projects/ByzerRawCopilot/output.txt 
model: qianwen_chatmodel_max_length: 2000model_max_input_length: 6000anti_quota_limit: 5
search_engine: bingsearch_engine_token: ENV {{BING_SEARCH_TOKEN}}
## execute the prompt generated by auto-coderexecute: true## extract the code from the prompt generated by auto-coder ## and overwrite the source codeauto_merge: true
project_type: py
query: > 在 /tmp/t-py/server/server.py 中使用 FastAPI 创建一个web服务。 服务的根路径返回 "Hello, World!"


注意,这里我们开启了 auto_merge 参数。这个参数会修改你的项目,所以总体来说还是慎用。如果这个参数没有开启,可以在 target_file 里找到生成的代码,可以自己手动复制黏贴下。

执行下:

auto-coder --file ./examples/from-zero-to-hero/002_fastapi_hello_word.yml


日志比较简单:

2024-03-21 17:55:08.944 | INFO     | autocoder.dispacher.actions.action:process_content:225 - Auto merge the code...2024-03-21 17:55:08.945 | INFO     | autocoder.common.code_auto_merge:merge_code:51 - Upsert path: /tmp/t-py/server/server.py2024-03-21 17:55:08.945 | INFO     | autocoder.common.code_auto_merge:merge_code:55 - Merged 1 files into the project.


结果:

(byzerllm-dev) (base) winubuntu@winubuntu:/tmp/t-py$ tree.└── server    └── server.py
1 directory, 1 file


执行下代码:

(byzerllm-dev) (base) winubuntu@winubuntu:/tmp/t-py$ python /tmp/t-py/server/server.pyINFO:     Started server process [1333520]INFO:     Waiting for application startup.INFO:     Application startup complete.INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)INFO:     127.0.0.1:33516 - "GET / HTTP/1.1" 200 OKINFO:     127.0.0.1:33516 - "GET /favicon.ico HTTP/1.1" 404 Not Found

访问下:

成功搞定。

现在,让我们来修改下代码。

source_dir: /tmp/t-pytarget_file: /home/winubuntu/projects/ByzerRawCopilot/output.txt 
model: qianwen_chatmodel_max_length: 2000model_max_input_length: 6000anti_quota_limit: 5
search_engine: bingsearch_engine_token: ENV {{BING_SEARCH_TOKEN}}
## execute the prompt generated by auto-coderexecute: true## extract the code from the prompt generated by auto-coder ## and overwrite the source codeauto_merge: true
project_type: py
query: > 修改 server.py 中的端口,改成 9001

执行下:

auto-coder --file ./examples/from-zero-to-hero/002_fastapi_modify_port.yml

此时打开 server.py 后,可以看到端口已经被改成 9001了

from fastapi import FastAPI
# 创建FastAPI应用实例app = FastAPI()
# 定义根路径的GET请求处理函数,返回 "Hello, World!"@app.get("/")def read_root(): return {"message": "Hello, World!"}
if __name__ == "__main__": # 启动web服务,端口改为9001 import uvicorn uvicorn.run(app, host="127.0.0.1", port=9001)


这里你可能好奇,为啥前面我可以直接说修改 server.py 而不需要写完整路径了。因为这次项目里有python文件了,有上下文,所以大模型是可以自动推测的,你不需要写那么完整。

今天内容就到这里。下一期我们看看如何解决你没有大模型API,或者你的API版大模型太弱,在只有Web版本的诸如 Kimi/GPT4 的情况下,AutoCoder如何帮助你完成编程。

这里剧透下:


1. AutoCoder 之负责生成Prompt,你可以拖拽文件到Web版大模型里去。

2. AutoCoder 在需要用到的大模型的地方,会询问你,这个时候你可以把结果贴到web版里,然后再把结果贴回来,帮助AutoCoder完成整个流程。


祝威廉
架构/大数据/机器学习的心得和体会,也会因为爱情和生活写首诗
 最新文章