diff --git a/llmops/app_factory.py b/llmops/app_factory.py index 4c953ed071b5b1b986825ce7891fcb526aef7c7d..21ac2d19d1b1e935919c5d1608bbbd25228493c3 100644 --- a/llmops/app_factory.py +++ b/llmops/app_factory.py @@ -6,6 +6,7 @@ from flask import Flask from config.config import init_config from llmops.router.log_analysis_router import log_analysis_router +from llmops.utils.agentfactoryUtils import agentfactory from utils.logger import setup_logger from router.task import task_blueprint @@ -25,7 +26,13 @@ def create_app() -> Flask: # 注册蓝图 app.register_blueprint(task_blueprint, url_prefix="/task") - app.register_blueprint(log_analysis_router) + app.register_blueprint(log_analysis_router, url_prefix="/log") + + # agent对象存储在app.config内 + factory = agentfactory(config) # 初始化agentfactory工厂类 + agent = factory.create_agent(); # 初始化agent + app.config["AGENT"] = agent + return app diff --git a/llmops/config/config.py b/llmops/config/config.py index 20db29de89386830c5a434cd815d1416d5aa0f67..7b586fdd69fe265392fdc9c10b9bc6a3fdbac36a 100644 --- a/llmops/config/config.py +++ b/llmops/config/config.py @@ -17,7 +17,7 @@ class AppConf: @dataclass class LlmConf: model: str - apikey: str + # apikey: str baseurl: str current_model: str diff --git a/llmops/controller/log_analysis_controller.py b/llmops/controller/log_analysis_controller.py index d27cbea5245d00a8bd546166c5fe43541dc3fe0e..63533e2687651e0d13f73d1dc2de55fea8499344 100644 --- a/llmops/controller/log_analysis_controller.py +++ b/llmops/controller/log_analysis_controller.py @@ -2,17 +2,20 @@ # * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. # * See LICENSE file for more details. # * Author: yzy_dev -# * Date: Thu Nov 28 15:00:41 2024 +0800 +# * Date: Thu Nov 28 15:00:41 2024 +0800 +from Agently.Agent.Agent import Agent from flask import jsonify from llmops.service.log_analysis_service import LogAnalysisService -from llmops.utils.response import success +from llmops.utils.response import success, fail class LogAnalysisController: def __init__(self): self.logAnalysis = LogAnalysisService() - def log_analysis(self,user_input): - log_analysis = self.logAnalysis.loganalysis(user_input) - return success(log_analysis,"返回成功") \ No newline at end of file + def log_analysis(self, user_input, agent: Agent): + log_analysis = self.logAnalysis.loganalysis(user_input, agent) + if not log_analysis: + return fail(log_analysis,"大模型对话返回失败") + return success(log_analysis, "大模型对话返回成功") \ No newline at end of file diff --git a/llmops/llm_tools/log_analysis/log_analysis_workflow.py b/llmops/llm_tools/log_analysis/log_analysis_workflow.py index 43402886e4c0a48172395c69e15d472863af1b0f..5062336e163b34e3bfd24a67ee05c926288ef910 100644 --- a/llmops/llm_tools/log_analysis/log_analysis_workflow.py +++ b/llmops/llm_tools/log_analysis/log_analysis_workflow.py @@ -7,16 +7,15 @@ import os import Agently +from Agently.Agent.Agent import Agent from llmops.config.config import init_config from llmops.llm_tools.log_analysis.agentfactory import agentfactory -def logworkflow(user_input): - conf = init_config() # 初始化配置 - factory = agentfactory(conf) # 初始化agentfactory工厂类 - agent = factory.create_agent(); # 初始化agent +def logworkflow(user_input,agent: Agent): main_workflow = Agently.Workflow() + log_agent = agent # @main_workflow.chunk("user_input") # def user_input(inputs, storage): @@ -60,15 +59,15 @@ def logworkflow(user_input): # print("*" * 50) # return assistant_reason_reply.get("improvement") assistant_reason_reply = ( - agent + log_agent .input(user_input) .info("用中文对系统日志进行解释,结果用字典形式例如:{reason:'解释'}") .instruct("目标语言:中文") .output({ "info_list": [ { - "知识对象": ("str", "回答{input}问题时,需要了解相关知识的具体对象"), - "关键知识点": ("str", "回答{input}问题时,需要了解的关键知识") + "知识对象": ("str", "分析{input}问题时,需要了解相关知识的具体对象"), + "关键知识点": ("str", "分析{input}问题时,需要了解的关键知识") } ], "analyse": ("str", "根据{info_list}出现的问题进行解释和分析"), @@ -84,7 +83,7 @@ def logworkflow(user_input): .connect_to("assistant_reply") .connect_to("END") ) - print(main_workflow.draw()) + # print(main_workflow.draw()) result = main_workflow.start() return result diff --git a/llmops/router/log_analysis_router.py b/llmops/router/log_analysis_router.py index ed7ffa5ca1efa9aa15bb7a60d4b6e59657356472..1d29bce6a163a30e863237df397367bf35f97f98 100644 --- a/llmops/router/log_analysis_router.py +++ b/llmops/router/log_analysis_router.py @@ -3,8 +3,7 @@ # * See LICENSE file for more details. # * Author: yzy_dev # * Date: Thu Nov 28 15:00:41 2024 +0800 -from flask import Blueprint,request - +from flask import Blueprint, request, current_app from llmops.controller.log_analysis_controller import LogAnalysisController log_analysis_router = Blueprint("log_analysis", __name__) @@ -13,6 +12,6 @@ logAnalysisController = LogAnalysisController() @log_analysis_router.route("/log_analysis", methods=["POST"]) def log_analysis(): + agent = current_app.config["AGENT"] user_input = request.get_json("user_input") - print(user_input) - return logAnalysisController.log_analysis(user_input) + return logAnalysisController.log_analysis(user_input, agent) diff --git a/llmops/service/log_analysis_service.py b/llmops/service/log_analysis_service.py index 03aecccaa5e7eb7ee893ad6e7c2d24a14ffb03aa..9ffb2e78d05d18a223e2b7acf72a109c68725874 100644 --- a/llmops/service/log_analysis_service.py +++ b/llmops/service/log_analysis_service.py @@ -2,11 +2,13 @@ # * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. # * See LICENSE file for more details. # * Author: yzy_dev -# * Date: Thu Nov 28 15:00:41 2024 +0800 -from llm_tools.log_analysis import log_analysis_workflow +# * Date: Thu Nov 28 15:00:41 2024 +0800 +from Agently.Agent.Agent import Agent + +from llmops.llm_tools.log_analysis import log_analysis_workflow class LogAnalysisService: - def loganalysis(self, userinput: str): - result = log_analysis_workflow.logworkflow(userinput) + def loganalysis(self, userinput: str, agent: Agent): + result = log_analysis_workflow.logworkflow(userinput, agent) return result diff --git a/llmops/utils/agentfactoryUtils.py b/llmops/utils/agentfactoryUtils.py new file mode 100644 index 0000000000000000000000000000000000000000..d9c9db72383d4e4f4de306fd8d6bf6fd9f911fed --- /dev/null +++ b/llmops/utils/agentfactoryUtils.py @@ -0,0 +1,19 @@ +import Agently + +from llmops.config.config import Config + + +def agentfactory(config: Config): + agent_factory = ( + Agently.AgentFactory() + .set_settings("current_model", config.llm_conf.current_model) + # .set_settings("model.OAIClient.auth.api_key", config.llm_conf.apikey) + .set_settings("model.OAIClient.options.model", config.llm_conf.model) + .set_settings("model.OAIClient.url", config.llm_conf.baseurl) + ) + return agent_factory + +def createagent(agent_factory: Agently.AgentFactory): + agent = agent_factory.create_agent(); + return agent +