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)