Skip to content

Commit

Permalink
Refactor code for better readability
Browse files Browse the repository at this point in the history
  • Loading branch information
coolbeevip committed Jul 11, 2024
1 parent d38bcef commit 5843565
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ class MarketingAnalysisAssistant:
def __init__(self, openai_api_base: str, openai_api_key: str, model_name: str, recursion_limit: int = 20):
self.model_name = model_name
self.recursion_limit = recursion_limit
self.llm = ChatOpenAI(model_name=model_name, openai_api_base=openai_api_base, openai_api_key=openai_api_key,
temperature=0.7, request_timeout=600, streaming=True)
self.llm = ChatOpenAI(model_name=model_name, openai_api_base=openai_api_base, openai_api_key=openai_api_key, temperature=0.7, request_timeout=600, streaming=True)
# 定义智能体
sales_staff = self.create_agent(
self.llm,
Expand All @@ -45,10 +44,8 @@ def __init__(self, openai_api_base: str, openai_api_key: str, model_name: str, r
# 定义图
workflow = StateGraph(AgentState)

workflow.add_node("sales_staff",
functools.partial(self.graph_node_agent, agent=sales_staff, name="sales_staff"))
workflow.add_node("sales_manager",
functools.partial(self.graph_node_agent, agent=sales_manager, name="sales_manager"))
workflow.add_node("sales_staff", functools.partial(self.graph_node_agent, agent=sales_staff, name="sales_staff"))
workflow.add_node("sales_manager", functools.partial(self.graph_node_agent, agent=sales_manager, name="sales_manager"))
workflow.add_node("sales_tool", self.graph_node_sales_tool)

workflow.add_conditional_edges(
Expand Down Expand Up @@ -211,15 +208,15 @@ def run(self):
"messages": [
HumanMessage(
content="利用事先准备好的agent和tool进行会话。"
"会话的主题是'调查我们公司商品A、B、C过去5年的数据,并制定本期的销售战略。"
"会话由sales_staff开始。"
"数据分析工具必须使用'./sales_data.csv'文件,并已表格形式输出数据。"
"数据分析工具将从'./sales_data.csv'文件中读取数据,进行基本统计和相关关系分析。"
"数据分析工具将输出文本形式的分析结果,并提供基于分析结果的见解。"
"接下来,将数据分析工具给出的分析结果和见解传达给sales_staff。"
"然后,sales_staff和sales_manager根据数据分析工具提供的分析结果和见解进行交流,并共同制定本期的销售策略。"
"sales_staff和sales_manager的会话总次数最多为20次。"
"最后,sales_manager在总结所有对话后,列出重要的要点并结束。"
"会话的主题是'调查我们公司商品A、B、C过去5年的数据,并制定本期的销售战略。"
"会话由sales_staff开始。"
"数据分析工具必须使用'./sales_data.csv'文件,并已表格形式输出数据。"
"数据分析工具将从'./sales_data.csv'文件中读取数据,进行基本统计和相关关系分析。"
"数据分析工具将输出文本形式的分析结果,并提供基于分析结果的见解。"
"接下来,将数据分析工具给出的分析结果和见解传达给sales_staff。"
"然后,sales_staff和sales_manager根据数据分析工具提供的分析结果和见解进行交流,并共同制定本期的销售策略。"
"sales_staff和sales_manager的会话总次数最多为20次。"
"最后,sales_manager在总结所有对话后,列出重要的要点并结束。"
)
],
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ class NetworkOperationsAnalysisAssistant:
def __init__(self, openai_api_base: str, openai_api_key: str, model_name: str, recursion_limit: int = 20):
self.model_name = model_name
self.recursion_limit = recursion_limit
self.llm = ChatOpenAI(model_name=model_name, openai_api_base=openai_api_base, openai_api_key=openai_api_key,
temperature=0.7, request_timeout=600, streaming=True)
self.llm = ChatOpenAI(model_name=model_name, openai_api_base=openai_api_base, openai_api_key=openai_api_key, temperature=0.7, request_timeout=600, streaming=True)
# 网络运营经理
networkOpsManager = self.create_agent(
self.llm,
Expand Down Expand Up @@ -76,11 +75,8 @@ def __init__(self, openai_api_base: str, openai_api_key: str, model_name: str, r

# 定义图
workflow = StateGraph(AgentState)
workflow.add_node("wirelessNetworkEngineer",
functools.partial(self.graph_node_agent, agent=wirelessNetworkEngineer,
name="wirelessNetworkEngineer"))
workflow.add_node("networkOpsManager",
functools.partial(self.graph_node_agent, agent=networkOpsManager, name="networkOpsManager"))
workflow.add_node("wirelessNetworkEngineer", functools.partial(self.graph_node_agent, agent=wirelessNetworkEngineer, name="wirelessNetworkEngineer"))
workflow.add_node("networkOpsManager", functools.partial(self.graph_node_agent, agent=networkOpsManager, name="networkOpsManager"))
# workflow.add_node("itOpsManager",
# functools.partial(self.agent_node, agent=itOpsManager, name="itOpsManager"))
# workflow.add_node("customerServiceManager",
Expand Down Expand Up @@ -137,6 +133,7 @@ def load_data_tool():
"""This tool load data"""
try:
import pandas as pd

data = pd.read_excel("./wireless_network_statistics_data.xlsx")
result = data.to_markdown()
except BaseException as e:
Expand All @@ -148,7 +145,6 @@ def load_data_tool():
def data_analysis_tool():
"""This tool enhances analysis by providing detailed statistics and visualizations."""
try:

data_response = []
df = pd.read_excel("./wireless_network_statistics_data.xlsx")

Expand All @@ -158,7 +154,7 @@ def data_analysis_tool():
data_response.append(f"Basic statistics:\n\n{analysis_result.to_markdown()}")

# 相关性统计
numerical_df = df.select_dtypes(include=['number'])
numerical_df = df.select_dtypes(include=["number"])
correlation = numerical_df.corr()
print(correlation)
data_response.append(f"\nCorrelation matrix:\n\n{correlation.to_markdown()}")
Expand Down Expand Up @@ -234,8 +230,8 @@ def create_agent(llm, tools, system_message: str):
"使用提供的工具来逐步回答问题。"
"如果您无法完全回答,没关系,另一个使用不同工具的助手将继续帮助您完成。尽力取得进展。"
"如果您或其他任何助手有最终答案或可交付成果,"
"请在响应中加上\"FINAL ANSWER\",这样团队就知道要停止了。"
"您可以访问以下工具:{tool_names}。\n{system_message}"
'请在响应中加上"FINAL ANSWER",这样团队就知道要停止了。'
"您可以访问以下工具:{tool_names}。\n{system_message}",
),
MessagesPlaceholder(variable_name="messages"),
]
Expand All @@ -260,14 +256,14 @@ def run(self):
"messages": [
HumanMessage(
content="利用事先准备好的 agent 和 tool 进行会话。"
"会话的主题是'分析总结无线网络统计报表,挖掘数据信息。"
"会话由 wirelessNetworkEngineer 开始。"
"数据分析工具首先加载数据。根据数据生成无线网统计报表的简要分析总结"
"数据分析工具对数据进行基本统计和相关关系分析。并提供基于分析结果的见解。"
"接下来,将数据分析工具给出的分析结果和见解传达给 networkOpsManager,并进行简要分析总结。"
"然后,wirelessNetworkEngineer 和 networkOpsManager 分析结果和见解进行交流,并共发现问题并制定有效措施。"
"wirelessNetworkEngineer 和 networkOpsManager的会话总次数最多为20次。"
"最后,networkOpsManager 在总结所有对话后,从总体概况、异常省份、资源和性能完成率、省份详细表现、文件传输即时率、性能合规率等方面给出综合性总结并结束对话。"
"会话的主题是'分析总结无线网络统计报表,挖掘数据信息。"
"会话由 wirelessNetworkEngineer 开始。"
"数据分析工具首先加载数据。根据数据生成无线网统计报表的简要分析总结"
"数据分析工具对数据进行基本统计和相关关系分析。并提供基于分析结果的见解。"
"接下来,将数据分析工具给出的分析结果和见解传达给 networkOpsManager,并进行简要分析总结。"
"然后,wirelessNetworkEngineer 和 networkOpsManager 分析结果和见解进行交流,并共发现问题并制定有效措施。"
"wirelessNetworkEngineer 和 networkOpsManager的会话总次数最多为20次。"
"最后,networkOpsManager 在总结所有对话后,从总体概况、异常省份、资源和性能完成率、省份详细表现、文件传输即时率、性能合规率等方面给出综合性总结并结束对话。"
)
],
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,5 @@ def test_load_data(self):
print(correlation)



if __name__ == "__main__":
unittest.main()

0 comments on commit 5843565

Please sign in to comment.