实际上 AutoCoder 最适合的场景是修改代码,因为它最原始的功能是把源码+你指定的文档+搜索引擎搜集到的资料和你的需求生成一个prompt给到大模型。
此外纠正大家一个观点, AutoCoder 不是一句话给你创建一个网站抑或一个大型的项目。我们是帮助研发或者产品更快的迭代产品。
不过我们还是从最开始项目啥都没有开始,现在,我们用 AutoCoder 创建一个 web server
source_dir: /tmp/t-py
target_file: /home/winubuntu/projects/ByzerRawCopilot/output.txt
model: qianwen_chat
model_max_length: 2000
model_max_input_length: 6000
anti_quota_limit: 5
search_engine: bing
search_engine_token: ENV {{BING_SEARCH_TOKEN}}
## execute the prompt generated by auto-coder
execute: true
## extract the code from the prompt generated by auto-coder
## and overwrite the source code
auto_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.py
2024-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.py
INFO: 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 OK
INFO: 127.0.0.1:33516 - "GET /favicon.ico HTTP/1.1" 404 Not Found
访问下:
成功搞定。
现在,让我们来修改下代码。
source_dir: /tmp/t-py
target_file: /home/winubuntu/projects/ByzerRawCopilot/output.txt
model: qianwen_chat
model_max_length: 2000
model_max_input_length: 6000
anti_quota_limit: 5
search_engine: bing
search_engine_token: ENV {{BING_SEARCH_TOKEN}}
## execute the prompt generated by auto-coder
execute: true
## extract the code from the prompt generated by auto-coder
## and overwrite the source code
auto_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完成整个流程。