mirror of
https://github.com/yv1ing/MollyAudit.git
synced 2025-09-16 14:55:50 +08:00
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
"""
|
|
===软件架构师===
|
|
用于分析项目的整体框架,抽取出清晰的项目结构和功能划分
|
|
"""
|
|
from langchain_core.messages import SystemMessage
|
|
from langchain_core.prompts import HumanMessagePromptTemplate, ChatPromptTemplate
|
|
from langchain_openai import ChatOpenAI
|
|
from langchain_community.callbacks.manager import get_openai_callback
|
|
from agents.CSA.prompt import CSA_SYSTEM_PROMPT, CSA_HUMAN_PROMPT
|
|
from logger import Logger
|
|
|
|
|
|
class CSA:
|
|
def __init__(self, base_url, api_key, model, process_output_callback):
|
|
# LLM配置
|
|
self.llm = ChatOpenAI(base_url=base_url, api_key=api_key, model=model)
|
|
|
|
# 提示词配置
|
|
self.system_prompt = CSA_SYSTEM_PROMPT
|
|
self.human_prompt = CSA_HUMAN_PROMPT
|
|
|
|
# 日志器配置
|
|
self.log = Logger(name='CSA', callback=process_output_callback)
|
|
|
|
|
|
def analyse(self, project_structure):
|
|
self.log.info('CSA开始分析项目模块')
|
|
|
|
# 提示词模板
|
|
self.llm_tmpl = ChatPromptTemplate.from_messages([
|
|
SystemMessage(content=self.system_prompt),
|
|
HumanMessagePromptTemplate.from_template(template=self.human_prompt),
|
|
])
|
|
|
|
# 调用链配置
|
|
self.llm_chain = self.llm_tmpl | self.llm
|
|
|
|
# 获取分析结果
|
|
with get_openai_callback() as cb:
|
|
result = self.llm_chain.invoke({'project_structure': project_structure})
|
|
|
|
# TODO: 接入token用量统计
|
|
# print(f"请求消耗的输入 token 数: {cb.prompt_tokens}")
|
|
# print(f"请求消耗的输出 token 数: {cb.completion_tokens}")
|
|
# print(f"请求总共消耗的 token 数: {cb.total_tokens}")
|
|
|
|
self.log.info('CSA完成分析项目模块')
|
|
return result.content
|