官方地址
https://github.com/AntonOsika/gpt-engineer
版本
稳定版
pip install gpt-engineer
用于开发
# 下载项目
git clone https://github.com/AntonOsika/gpt-engineer.git
cd gpt-engineer
# 创建python虚拟环境
python3.9 -m venv env
source env/bin/activate
pip3.9 install --upgrade pip
# 安装
pip install -e .
调用GPT API
# 新增api key变量
export OPENAI_API_KEY=sk-kWyrGceFzDExxxxxxxxxxxx
运行 gpt-engineer
ChatGPT生成代码
修改提词器
# 修改提词器
$ cp -r projects/example/ projects/license
$ vi /projects/license/prompt
1. 请用中文和我对话, 正在使用gpt-3.5 注意Rate limits的问题
2. 项目用途: 验证用户序列号License服务端
3. 使用djangorestframework+djangorestframework-simplejwt,视图尽量使用ModelViewSet,路由用DefaultRouter()
生成代码
# 生成代码
gpt-engineer projects/license
创建一个Python环境项目
# 建立项目
cd projects/license/workspace
python3 -m venv myenv
source myenv/bin/activate
pip install djangorestframework djangorestframework-simplejwt django-simpleui django-import-export
pip freeze > requirements.txt
django-admin startproject website .
Django DRF web框架配置
#################### website/settings.py ####################
INSTALLED_APPS = [
'simpleui',
......
'rest_framework',
'rest_framework_simplejwt',
'app',
'import_export', # django-admin导入导出
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated', # 全局启用登录验证
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication', # 全局使用认证方式JWT
'rest_framework.authentication.SessionAuthentication', # 基于Django会话管理
'rest_framework.authentication.BasicAuthentication', # basic认证
),
}
# JWT配置
import datetime
SIMPLE_JWT = {
'TOKEN_TYPE_CLAIM': 'token_type',
'AUTH_HEADER_TYPES': ('Bearer',), # 自定义请求头, Authorization: Bearer <token>
'ACCESS_TOKEN_LIFETIME': datetime.timedelta(days=7), # 设置token过期时间
'BLACKLIST_AFTER_ROTATION': True # 默认值是True,旧的刷新令牌将被列入黑名单
}
#################### website/urls.py ####################
from django.contrib import admin
from django.urls import path,include
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView,
)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('api/license/', include('app.urls')), # gpt生成代码的路由,urls.py扮演了控制器(Controller)的角色
]
]
# 初始化
python manage.py makemigrations app
python manage.py migrate
python manage.py createsuperuser
请求接口
token 认证
basic认证
Djangp-admin后台
帮助命令
gpt-engineer --help
注意,查看所有可用选项。例如,--steps use_feedback让您改进/修复项目中的代码
gpt3 调整请求频率
vi gpt_engineer/ai.py ( 74 行)
def next(self, messages: List[Dict[str, str]], prompt=None, *, step_name=None):
if prompt:
messages += [{"role": "user", "content": prompt}]
logger.debug(f"Creating a new chat completion: {messages}")
response = openai.ChatCompletion.create(
messages=messages,
stream=True,
model=self.model,
temperature=self.temperature,
)
import time
time.sleep(20) # 延迟20秒
logger.info("延迟20秒")