team-ai / backend /code_generator.py
peichao.dong
add code generator
f8736b7
from backend.smart_domain.api_layer_code_tool import apiLayerCodeGenerator
from backend.smart_domain.association import associationCodeGenerator
from backend.smart_domain.association_impl import asociationImplCodeGenerator
from backend.smart_domain.db_entity_repository import dbEntityRepositoryCodeGenerator
from backend.smart_domain.domain_layer_code_tool import domainLayerCodeGenerator
from backend.smart_domain.entity import entityCodeGenerator
from backend.smart_domain.persistent_layer_code_tool import persistentLayerCodeGenerator
from langgraph.prebuilt import create_react_agent
from backend.models import model, models
from langchain_core.messages import HumanMessage
from langgraph.checkpoint.sqlite import SqliteSaver
memory = SqliteSaver.from_conn_string(":memory:")
code_agent_tools = [domainLayerCodeGenerator, entityCodeGenerator, associationCodeGenerator, persistentLayerCodeGenerator, dbEntityRepositoryCodeGenerator, asociationImplCodeGenerator, apiLayerCodeGenerator]
agent_executor = create_react_agent(model, code_agent_tools, checkpointer=memory)
async def code_generator(
model,
command: str,
history,
context: str):
message = command + f"""
context: '''{context}'''
"""
history[-1][1] = ""
providor = models[model] if model in models else "openai"
async for event in agent_executor.astream_events(
{"messages": [HumanMessage(content=message)]},
{'configurable': {
"thread_id": "1",
"model": model,
"model_provider": providor
}
}, version="v1"):
kind = event["event"]
if kind == "on_chat_model_stream":
content = event["data"]["chunk"].content
if content:
history[-1][1] += content
yield history
yield history
if __name__ == '__main__':
message = """generate entity code according the following context:
'''Feature Config指的是一些特性的配置信息,例如应用程序的功能模块和设置。
管理员可以通过界面进行新增、修改、分页查看、发布、撤销和删除操作;
新增Feature Config应该提供 FeatureKey(通过FeatureKey 与Feature关联),title 和 description, data(配置的数据,数据格式依据Feature配置模版生成,由用户填写),saData(键值对埋点数据,由用户自定义输入),圈人条件(包括开始时间、截止时间、圈人白名单、地理位置、灰度比例等)
新增后FeatureConfig记录状态默认为DRFAT。 管理课对DRAFT状态的数据执行发布操作,发布后记录变为PUBLISHED状态, 仅PUBLISHED状态的数据且符合圈人条件的配置C端可见。PUBLISHED状态的数据可执行撤销操作,撤销后记录变为DISABLED状态。
对DRAFT状态的记录执行删除操作后,记录会从数据库中物理删除,非DRAFT状态的记录,执行删除操作,进行逻辑删除状态标记为DELETED,DELETED状态的数据在管理界面上不可见。'''
"""
response = agent_executor.invoke({"messages": [HumanMessage(content=message)]}, {'configurable': {"thread_id": "1"}})
print(response)