完善重构各类分析

1. 合并acv分析数据;2.将llm分析相关的代码增加llm前缀
This commit is contained in:
Tiger Ren 2024-08-29 02:26:42 +08:00
parent fb04cb8a72
commit 59a53a04bc
20 changed files with 760 additions and 251 deletions

View File

@ -13,7 +13,8 @@ def strip_character(column_name, characters: List[str]):
def refine_content(df):
strip_character_list = [' ', '\n', ':', '','其他']
for col in df.columns:
df[col] = df[col].apply(lambda x: "其他" if strip_character(x, strip_character_list) == "" else strip_character(x, strip_character_list))
df[col] = df[col].apply(lambda x: "其他" if isinstance(x, str) and strip_character(x, strip_character_list) == ""
else (strip_character(x, strip_character_list) if isinstance(x, str) else x))
return df
def calc_acv_mean(df, acv_name, group_by_column):
@ -28,6 +29,12 @@ def calc_acv_sum(df, acv_name, group_by_column):
df_grouped_sum[acv_name] = df_grouped_sum[acv_name].apply(lambda x: '{:,}'.format(x))
return df_grouped_sum
def calc_acv_sum_and_count(df, acv_name, group_by_column):
df_grouped_sum = df.groupby(group_by_column)[acv_name].sum().astype(int).reset_index()
df_grouped_count = df.groupby(group_by_column)[acv_name].count().reset_index()
df_grouped_sum_count = pd.merge(df_grouped_sum, df_grouped_count, on=group_by_column, how='outer')
return df_grouped_sum_count
def save_to_excel(dataframes, sheet_names, output_file):
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
for df, sheet_name in zip(dataframes, sheet_names):
@ -42,7 +49,7 @@ dataframes = []
sheet_names = []
# ACV by 客户分类
df_win_grouped_by_industry_sum = calc_acv_sum(df_win, acv_name, '客户分类')
df_win_grouped_by_industry_sum = calc_acv_sum_and_count(df_win, acv_name, '客户分类')
dataframes.append(refine_content(df_win_grouped_by_industry_sum))
sheet_names.append("ACV by 行业")
@ -51,7 +58,7 @@ df_win_grouped_by_industry_mean = calc_acv_mean(df_win, acv_name, '客户分类'
dataframes.append(refine_content(df_win_grouped_by_industry_mean))
sheet_names.append("平均ACV by 行业")
df_win_grouped_by_sub_industry_sum = calc_acv_sum(df_win, acv_name, '客户行业')
df_win_grouped_by_sub_industry_sum = calc_acv_sum_and_count(df_win, acv_name, '客户行业')
dataframes.append(refine_content(df_win_grouped_by_sub_industry_sum))
sheet_names.append("ACV by 子行业")
@ -59,13 +66,13 @@ df_win_grouped_by_sub_industry_mean = calc_acv_mean(df_win, acv_name, '客户行
dataframes.append(refine_content(df_win_grouped_by_sub_industry_mean))
sheet_names.append("平均ACV by 子行业")
# 取Excel文件
# <EFBFBD><EFBFBD><EFBFBD>取Excel文件
df = pd.read_excel('./data_src/pingcap_pipeline.xlsx')
# 按照"客户分类"列分组并计算ACV列的和
acv_name = '预估 ACV'
df_pipeline_grouped_by_industry_sum = calc_acv_sum(df, acv_name, '负责人所属行业')
df_pipeline_grouped_by_industry_sum = calc_acv_sum_and_count(df, acv_name, '负责人所属行业')
dataframes.append(refine_content(df_pipeline_grouped_by_industry_sum))
sheet_names.append("预估ACV by 行业")
@ -73,7 +80,7 @@ df_pipeline_grouped_by_industry_mean = calc_acv_mean(df, acv_name, '负责人所
dataframes.append(refine_content(df_pipeline_grouped_by_industry_mean))
sheet_names.append("平均预估ACV by 行业")
df_pipeline_grouped_by_sub_industry_sum = calc_acv_sum(df, acv_name, '客户行业')
df_pipeline_grouped_by_sub_industry_sum = calc_acv_sum_and_count(df, acv_name, '客户行业')
dataframes.append(refine_content(df_pipeline_grouped_by_sub_industry_sum))
sheet_names.append("预估ACV by 子行业")
@ -82,7 +89,7 @@ dataframes.append(refine_content(df_pipeline_grouped_by_sub_industry_mean))
sheet_names.append("平均预估ACV by 子行业")
# 保存所有数据帧到一个Excel文件中
output_file = './output/acv_analysis.xlsx'
output_file = './output/acv_analysis_v2(with count).xlsx'
save_to_excel(dataframes, sheet_names, output_file)
print(f"Analysis results have been saved to {output_file}")

View File

@ -26,6 +26,22 @@ def get_acv_distribution(df, acv_name, industry_col_name):
industry_acv_distribution.loc['Total'] = industry_acv_distribution.sum()
return industry_acv_distribution
def get_acv_distribution_sum(df, acv_name, industry_col_name):
# Define the bins for ACV intervals
bins = [0, 1e6, 5e6, float('inf')]
labels = ['<100万', '100万-500万', '>500万']
# Create a new column 'ACV Interval' based on the bins
df['ACV Interval'] = pd.cut(df[acv_name], bins=bins, labels=labels, right=False)
# Group by industry and ACV interval, then sum the ACV values
industry_acv_sum = df.groupby([industry_col_name, 'ACV Interval'])[acv_name].sum().unstack(fill_value=0)
# Add a 'Total' row
industry_acv_sum.loc['Total'] = industry_acv_sum.sum()
return industry_acv_sum
# 新增函数将结果保存到Excel
def save_to_excel(dfs, sheet_names, output_file):
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
@ -42,9 +58,13 @@ won_sub_industry_dist = get_acv_distribution(df, 'ACV', '客户行业')
pipeline_industry_dist = get_acv_distribution(df_pipeline, '预估 ACV', '负责人所属行业')
pipeline_sub_industry_dist = get_acv_distribution(df_pipeline, '预估 ACV', '客户行业')
pipeline_sub_industry_dist_sum = get_acv_distribution_sum(df_pipeline, '预估 ACV', '客户行业')
pipeline_sub_industry_dist_sum.to_excel('./output/pipeline_sub_industry_dist_sum.xlsx')
# 保存结果到Excel
dfs = [won_industry_dist, won_sub_industry_dist, pipeline_industry_dist, pipeline_sub_industry_dist]
sheet_names = ['成单-行业分布', '成单-子行业分布', 'Pipeline-行业分布', 'Pipeline-子行业分布']
save_to_excel(dfs, sheet_names, './output/acv_distribution.xlsx')
# save_to_excel(dfs, sheet_names, './output/acv_distribution.xlsx')
print("ACV distribution analysis completed. Results saved in './output/acv_distribution.xlsx'")

44
combine_acv_data.py Normal file
View File

@ -0,0 +1,44 @@
import pandas as pd
# Read data from specific Excel sheets
excel_file = './output/acv_analysis_v2(with count).xlsx' # Replace with the actual path to your Excel file
df_pipeline = pd.read_excel(excel_file, sheet_name='预估ACV by 子行业') # Replace 'Pipeline' with the actual sheet name
df_won = pd.read_excel(excel_file, sheet_name='ACV by 子行业') # Replace 'Won' with the actual sheet name
# Merge the two dataframes on '客户行业'
df_combined = pd.merge(df_pipeline, df_won, on='客户行业', how='outer', suffixes=('_pipeline', '_won'))
# Rename columns for clarity
df_combined = df_combined.rename(columns={
'ACV Sum': 'ACVSUM',
'ACV Count': 'ACVCNT',
'预估 ACV Sum': '预估ACVSUM',
'预估 ACV Count': '预估ACVCNT',
})
# Fill NaN values with 0 for numerical columns
df_combined['ACVSUM'] = df_combined['ACVSUM'].fillna(0)
df_combined['ACVCNT'] = df_combined['ACVCNT'].fillna(0)
df_combined['预估ACVSUM'] = df_combined['预估ACVSUM'].fillna(0)
df_combined['预估ACVCNT'] = df_combined['预估ACVCNT'].fillna(0)
# Convert numerical columns to integers
df_combined['ACVSUM'] = df_combined['ACVSUM'].astype(int)
df_combined['ACVCNT'] = df_combined['ACVCNT'].astype(int)
df_combined['预估ACVSUM'] = df_combined['预估ACVSUM'].astype(int)
df_combined['预估ACVCNT'] = df_combined['预估ACVCNT'].astype(int)
# Reorder columns
df_combined = df_combined[['客户行业', 'ACVSUM', 'ACVCNT', '预估ACVSUM', '预估ACVCNT']]
# Sort by '预估ACV' in descending order
df_combined = df_combined.sort_values('预估ACVSUM', ascending=False)
# Reset index
df_combined = df_combined.reset_index(drop=True)
print(df_combined)
df_combined.to_excel('./output/acv_analysis_combined.xlsx', index=False)

View File

@ -1,243 +0,0 @@
# This Python file uses the following encoding: utf-8
"""
File: criteria_reflection.py
Description: 以专业咨询机构的赢单路径为参考结合公司实际统计数据进行反思提出改进版本的赢单路径
Author: [Your Name]
Date: [Current Date]
"""
from AgentProxy import AgentProxy
import pandas as pd
professional_won_path = [
{
"销售阶段名称": "01-prospecting",
"客户采购行为": "",
"销售阶段任务": "了解客户信息、与客户进行交流,初步了解客户需求,并确定项目对接人,进入客户供应商名单",
"关键获取信息": "1.联系人姓名\n2.部门\n3.职务\n4.手机\n5.预估整体项目节点数\n6.CRM情况\n7.是否是独立预算",
"销售关键动作": "1、了解客户组织架构了解客户现有系统使用情况、竞品使用情况\n2、判断匹配度\n3、明确关键部门及其关键人\n4、明确客户是否有对应预算",
"售前关键动作": "",
"客户支持行为": "1. 交流中客户较为开放,能告知需求,计划较为清晰;\n2. 愿意进一步需求沟通;\n3. 交流有多人甚至有多部门参与讨论;",
"阶段转化标准": "1.客户有需求\n2.有明确的项目联系人"
},
{
"销售阶段名称": "02-evaluation",
"客户采购行为": "",
"销售阶段任务": "收集客户信息,了解客户内部预算情况、预期的项目落地时间、产品和数量等,判断商机可靠性;组织技术交流,讲解公司解决方案,传递公司价值",
"关键获取信息": "1、整理需求确认文档客户确认\n2.在CRM录入组织架构明确决策链和决策人\n3.预算是否完成申批\n4.是否进PCC\n5.PCC是否已申批:6.PcC状态\n7.测试类型\n8.测试项(用例)",
"销售关键动作": "1、整理需求确认文档客户确认\n2、在CRM录入组织架构明确决策链和决策人\n3、了解决策链的每个客户动力;\n4.发展线人\n5、组织技术交流传递公司及产品价值引导客户的场景和我们的特性结合\n6、组织技术交流了解预期的项目落地时间、产品和数量等\n7.和客户确认是否需要测试\n8、对客户提出的测试需求进行评估确定需求我们优势够决定是否跟进测试",
"售前关键动作": "",
"客户支持行为": "1.愿意透露决策链信息,预算信息,友商信息,时间信息。\n2. 能介绍高title的人\n3. 客户有对我们产品的测试计划;",
"阶段转化标准": "1.客户有预算\n2.有明确的项目时间\n3.有预期的产品和数量"
},
{
"销售阶段名称": "03-qualification",
"客户采购行为": "",
"销售阶段任务": "收集、确认项目立项信息,明确产品和数量;\n组织测试必要性并引导客户做poc测试验证应用场景和技术适用性、平鼎成功入围",
"关键获取信息": "1.立项批复\n2.立项时间\n3.立项金额\n(立项报告的内容)\n4.招标方式",
"销售关键动作": "1、和客户确认是否需要测试\n2、对客户提出的测试需求进行评估确定需求我们优势够决定是否跟进测试\n3、引导客户的测试方案制定引导将我们优势点加入到测试方案中性能、扩展性、边界\n4、在公司内部组织测试资源\n5、获取客户内部的测试报告了解真实的测试结论\n6、了解客户对测试结果的态度和对手情况\n7、做测试正式汇报和客户达成一致",
"售前关键动作": "",
"客户支持行为": "1.支持对我方有利的测试方案\n2. 提供内部真实的测试报告\n3.决策链人员认同测试效果,客户愿意引荐更高层领导汇报\n4.双方沟通项目计划且达成一致\n5.主动邀请提供招标参数或汇报材料",
"阶段转化标准": "1.项目预算批准、项目已立项\n2.有确定产品和数量、或\n3.完成场景应用/技术适用性验证、客户确定平鼎入围完成poc"
},
{
"销售阶段名称": "04-bidding/negotiating",
"客户采购行为": "",
"销售阶段任务": "确认项目是否需要招标,提前影响招投标结果并赢得标书;若不需要招标,则完成商务谈判,确认价格和产品可交付沟通与评审",
"关键获取信息": "1.是否投标\n2.发标时间\n3.投标时间\n4.竞争对手\n5.对手产配置\n6.对手投标金额",
"销售关键动作": "1.制定关单策略及竞争策略\n2.控制立项报告(对对手不利的参数)\n3.如果无法控制立项,制定应对策略\n4.创造机会与高层沟通汇报\n5.沟通交付计划及SOW\n6. 确定关键联系人",
"售前关键动作": "",
"客户支持行为": "1.反馈客户内部的进展和计划\n2. 客户内部立项成功\n3.采纳我们提交的标参数(或有利于我方)\n3. 对黑马和灰犀牛的处理,愿意提供应对处理",
"阶段转化标准": "1.完成可交付评审;\n2.投标通过审批;\n3.投标结果确认赢标或完成商务谈判,确定价格和产品"
},
{
"销售阶段名称": "05-contract review",
"客户采购行为": "",
"销售阶段任务": "发起合同协议审批申请,确认合同条款",
"关键获取信息": "",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "",
"阶段转化标准": "合同评审通过,完成合同协商审批,确认合同条款"
},
{
"销售阶段名称": "06-closed won",
"客户采购行为": "",
"销售阶段任务": "合同归档,项目赢单",
"关键获取信息": "",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "",
"阶段转化标准": "合同归档"
},
{
"销售阶段名称": "06-closed cancel",
"客户采购行为": "确认项目取消原因",
"销售阶段任务": "复盘项目输单原因",
"关键获取信息": "取消原因",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "",
"阶段转化标准": "1.客户明确表示取消项目\n2.投标确认状态为输单"
}
]
actual_won_path = [
{
"销售阶段名称": "01-prospecting",
"客户采购行为": "",
"销售阶段任务": "",
"关键获取信息": "1.联系人姓名\n2.部门\n3.职务\n4.手机\n5.预估整体项目节点数\n6.CRM情况\n7.是否是独立预算",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "1. 交流中客户较为开放,能告知需求,计划较为清晰;\n2. 愿意进一步需求沟通;\n3. 交流有多人甚至有多部门参与讨论;",
"阶段转化标准": ""
},
{
"销售阶段名称": "02-evaluation",
"客户采购行为": "",
"销售阶段任务": "完成需求确认与收集\n完成技术评估与测试\n完成商务评估与商机确认\n完成市场调研与竞争分析",
"关键获取信息": "1.预算是否完成申批\n2.是否进PCC\n3.PCC是否已申批\n4.PCC状态\n5.测试类型\n6.测试项(用例)",
"销售关键动作": "**客户接触与需求识别**\n**商务调研与合同准备**\n**项目支持与优化**\n**内部协调与支持**",
"售前关键动作": "",
"客户支持行为": "1. **客户需求的深入理解与确认**:\n- 积极主动地与客户沟通,深入理解客户的需求、预算和业务目标。确保和明确预算。\n- 客户愿意参与并进行多次沟通,以确认需求的具体细节,并帮助解决方案能够准确匹配需求。\n\n2. **产品或服务的匹配度评估**:\n- 协助组织产品演示或服务方案说明会,充分展示我们产品的特点,包括技术能力、功能特性和性能指标。\n- 需要进行必要的技术评估和测试,以证明产品或服务的有效性和可靠性。\n\n3. **客户的积极认知与接受度**:\n- 客户对我们的解决方案表现出浓厚兴趣,并对其潜在价值有清晰认识。",
"阶段转化标准": ""
},
{
"销售阶段名称": "03-qualification",
"客户采购行为": "",
"销售阶段任务": "完成需求确认与收集\n完成技术评估与测试\n完成商务评估与商机确认\n完成项目立项与合同准备",
"关键获取信息": "1.立项批复\n2.立项时间\n3.立项金额\n(立项报告的内容)\n4.招标方式",
"销售关键动作": "**客户关系管理**\n**项目支持与优化**\n**内部协调与支持**\n**商务谈判与合同准备**",
"售前关键动作": "",
"客户支持行为": "1. 支持对我方有利的测试方案\n2. 提供内部真实的测试报告\n3.决策链人员认同测试效果,客户愿意引荐更高层领导汇报\n4.双方沟通项目计划且达成一致\n5.主动邀请提供招标参数或汇报材料",
"阶段转化标准": "1. **需求与方案的匹配度**:确认客户的需求是否与公司的产品或服务有力匹配,包括技术能力、产品特性、服务范围等。\n\n2. **技术评估与测试**:评估完成技术验证或试用阶段,包括技术风险、兼容问题、服务水平等,并有足够的保障措施。\n\n3. **商务条款与定价**:初步确定商务条款和定价策略,以及客户对公司的信任程度。\n\n4. **内部准备就绪**:确保公司内部对于承接项目的服务能力已经就绪,包括技术支持、交付能力、服务团队、人力资源等。\n\n5. **客户意愿与定位**:明确在客户采购决策链中的竞争优势定位,包括定价策略、合同条款、竞争优势等。\n\n6. **合规性与法律审查**:确保所有商务活动符合相关法律法规,合同草案已经过法律审核,没有潜在的法律风险。"
},
{
"销售阶段名称": "04-bidding/negotiating",
"客户采购行为": "",
"销售阶段任务": "完成需求确认与收集\n完成技术评估与测试\n完成项目立项与合同准备\n完成商务谈判与竞争分析",
"关键获取信息": "1.是否投标\n2.发标时间\n3.投标时间\n4.竞争对手\n5.对手产配置\n6.对手投标金额",
"销售关键动作": "**客户关系管理**\n**合同审查与订单处理**\n**客户接触与需求识别**\n**商务谈判与合同准备**",
"售前关键动作": "",
"客户支持行为": "1.反馈客户内部的进展和计划\n2. 客户内部立项成功\n3.采纳我们提交的招标参数(或有利于我方)\n3. 对黑马和灰犀牛的处理,愿意提供应对处理",
"阶段转化标准": "1. **客户需求与解决方案的匹配度确认**:\n- 确保所提供的解决方案完全符合客户的需求和预期。\n- 与客户共同验证解决方案的有效性和可行性。\n\n2. **中标主张的确定与沟通**:\n- 明确并强化产品或服务的独特卖点USP和价值主张。\n- 确认客户对产品或服务的认可度和采购意愿维持在较高水平。"
},
{
"销售阶段名称": "05-contract review",
"客户采购行为": "",
"销售阶段任务": "",
"关键获取信息": "",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "",
"阶段转化标准": ""
},
{
"销售阶段名称": "06-closed won",
"客户采购行为": "",
"销售阶段任务": "完成需求确认与收集\n完成合同签订与归档",
"关键获取信息": "",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "",
"阶段转化标准": ""
},
{
"销售阶段名称": "06-cancel",
"客户采购行为": "",
"销售阶段任务": "",
"关键获取信息": "取消原因",
"销售关键动作": "",
"售前关键动作": "",
"客户支持行为": "",
"阶段转化标准": ""
}
]
api_key = 'c6bbe7f48063a2c1'
api_secret = '5f8e7d3a97465cc099bf19bd1b70c266'
assistant_id = "66bb09a84673b57506fe7bbd"
agent = AgentProxy(assistant_id, api_key, api_secret)
reflection_path = [] # 记录反思后的赢单路径
# Iterate over professional_won_path and get index in the loop
for index, pro_stage in enumerate(professional_won_path):
print(f"Index: {index}")
custom_stage = actual_won_path[index]
# 反思销售阶段任务
prompt_reflection_task = f"""
任务
以专业咨询机构提出的销售阶段任务为参考和蓝本结合客户自行总结的销售任务提出改进版本的销售阶段任务注意尽可能以专业机构的版本为主语言风格也按照专业机构的版本
若客户自行总结的销售阶段任务为空或没有内容则直接使用专业咨询机构提出的销售阶段任务
输入
专业咨询机构提出的销售阶段任务
{pro_stage['销售阶段任务']}
客户自行总结的销售任务
{custom_stage['销售阶段任务']}
输出
反思后的销售阶段任务以及反思后的销售阶段任务与专业咨询机构提出的销售阶段任务的差异以及该改进的方法依据逻辑等
"""
print(f"prompt_reflection_task: {prompt_reflection_task}")
reflection_task = agent.send_message(prompt_reflection_task)
print(f"反思后的销售阶段任务: {reflection_task}")
reflection_stage = pro_stage.copy()
reflection_stage['销售阶段任务'] = reflection_task
# 反思销售关键动作
prompt_reflection_action = f"""
任务
以专业咨询机构提出的销售关键动作为参考和蓝本结合客户自行总结的销售关键动作提出改进版本的销售关键动作注意尽可能以专业机构的版本为主语言风格也比照专业机构的版本
若结合客户自行总结的销售关键动作为空或没有内容则直接使用专业咨询机构提出的销售关键动作
输入
专业咨询机构提出的销售关键动作
{pro_stage['销售关键动作']}
通过客户自行总结得到的销售关键动作
{custom_stage['销售关键动作']}
输出
反思后的销售关键动作以及反思后的销售关键动作与专业咨询机构提出的销售关键动作的差异以及该改进的方法依据逻辑等
"""
print(f"prompt_reflection_action: {prompt_reflection_action}")
reflection_action = agent.send_message(prompt_reflection_action)
print(f"反思后的销售关键动作: {reflection_action}")
reflection_stage['销售关键动作'] = reflection_action
# 反思阶段转化标准
prompt_reflection_standard = f"""
任务
以专业咨询机构提出的阶段转化标准为参考和蓝本结合客户自行总结的阶段转化标准提出改进版本的阶段转化标准注意尽可能以专业机构的版本为主语言风格也比照专业机构的版本
若通过客户自行总结得到的阶段转化标准为空或没有内容则直接使用专业咨询机构提出的阶段转化标准
输入
专业咨询机构提出的阶段转化标准
{pro_stage['阶段转化标准']}
通过客户自行总结得到的阶段转化标准
{custom_stage['阶段转化标准']}
输出
反思后的阶段转化标准以及反思后的阶段转化标准与专业咨询机构提出的阶段转化标准的差异以及该改进的方法依据逻辑等
"""
print(f"prompt_reflection_standard: {prompt_reflection_standard}")
reflection_standard = agent.send_message(prompt_reflection_standard)
print(f"反思后的阶段转化标准: {reflection_standard}")
reflection_stage['阶段转化标准'] = reflection_standard
reflection_path.append(reflection_stage)
# Write reflection_path to Excel
df = pd.DataFrame(reflection_path)
# Reorder columns to match the original structure
column_order = [
"销售阶段名称", "客户采购行为", "销售阶段任务", "关键获取信息",
"销售关键动作", "售前关键动作", "客户支持行为", "阶段转化标准"
]
df = df.reindex(columns=column_order)
# Write to Excel
excel_file_path = 'reflection_path_results.xlsx'
df.to_excel(excel_file_path, index=False)
print(f"Reflection path results have been written to {excel_file_path}")

44
cursor Normal file
View File

@ -0,0 +1,44 @@
Stage: Bidding+Negotiation
完成需求确认与收集: 1.43%
完成技术评估与测试: 2.86%
完成商务谈判与合同准备: 0.00%
完成内部审批与预算确认: 0.00%
完成项目立项与采购流程: 1.43%
完成关系建立与维护: 0.00%
完成市场调研与竞争分析: 2.86%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 0.00%
Stage: Qualification
完成需求确认与收集: 1.69%
完成技术评估与测试: 1.69%
完成商务谈判与合同准备: 1.69%
完成内部审批与预算确认: 1.69%
完成项目立项与采购流程: 0.00%
完成关系建立与维护: 0.00%
完成市场调研与竞争分析: 1.69%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 0.00%
Stage: Closed Won
完成需求确认与收集: 0.00%
完成技术评估与测试: 0.00%
完成商务谈判与合同准备: 3.85%
完成内部审批与预算确认: 0.00%
完成项目立项与采购流程: 0.00%
完成关系建立与维护: 3.85%
完成市场调研与竞争分析: 0.00%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 3.85%
Stage: Evaluation
完成需求确认与收集: 2.22%
完成技术评估与测试: 4.44%
完成商务谈判与合同准备: 0.00%
完成内部审批与预算确认: 0.00%
完成项目立项与采购流程: 2.22%
完成关系建立与维护: 0.00%
完成市场调研与竞争分析: 4.44%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 0.00%

View File

@ -0,0 +1,29 @@
客户接触与需求识别
产品演示与方案提供
商务谈判与合同准备
项目支持与优化
市场分析与策略调整
合同审查与订单处理
客户关系维护
后续跟进与机会挖掘
内部协调与支持
技术支持与交流
市场情况调研
预算与立项推动
项目跟踪与推进
客户体验优化
技术交流与产品推广
需求分析与适配
项目监控和更新
技术支持与配合
方案制定
项目进展与计划沟通
需求讨论与时间规划
商机更新与管理
招标准备与投标
技术支持与服务兜底
需求讨论与方案交流
需求与技术讨论
方案推进
需求讨论与材料提供
策略制定与执行

View File

@ -0,0 +1,65 @@
Stage: PoC Won/Bidding+Negotiation
客户接触与需求识别: 130.00%
产品演示与方案提供: 61.43%
商务谈判与合同准备: 162.86%
项目支持与优化: 125.71%
市场分析与策略调整: 62.86%
合同审查与订单处理: 37.14%
客户关系维护: 50.00%
后续跟进与机会挖掘: 28.57%
内部协调与支持: 111.43%
技术支持与交流: 2.86%
市场情况调研: 4.29%
预算与立项推动: 7.14%
项目跟踪与推进: 4.29%
客户体验优化: 2.86%
技术交流与产品推广: 1.43%
需求分析与适配: 2.86%
项目监控和更新: 2.86%
技术支持与配合: 7.14%
方案制定: 1.43%
Stage: Qualification
客户关系维护: 47.46%
项目支持与优化: 144.07%
客户接触与需求识别: 154.24%
内部协调与支持: 83.05%
方案制定: 1.69%
商务谈判与合同准备: 113.56%
合同审查与订单处理: 6.78%
市场分析与策略调整: 57.63%
产品演示与方案提供: 72.88%
后续跟进与机会挖掘: 25.42%
项目进展与计划沟通: 3.39%
None: 37.29%
需求讨论与时间规划: 6.78%
商机更新与管理: 1.69%
Stage: Closed Won
客户关系维护: 92.31%
合同审查与订单处理: 115.38%
客户接触与需求识别: 107.69%
商务谈判与合同准备: 130.77%
内部协调与支持: 123.08%
项目支持与优化: 123.08%
市场分析与策略调整: 53.85%
后续跟进与机会挖掘: 42.31%
产品演示与方案提供: 42.31%
招标准备与投标: 11.54%
技术支持与服务兜底: 7.69%
Stage: Evaluation
客户接触与需求识别: 188.89%
产品演示与方案提供: 80.00%
商务谈判与合同准备: 51.11%
项目支持与优化: 91.11%
内部协调与支持: 73.33%
合同审查与订单处理: 2.22%
后续跟进与机会挖掘: 20.00%
市场分析与策略调整: 80.00%
客户关系维护: 44.44%
需求讨论与方案交流: 4.44%
需求与技术讨论: 8.89%
方案推进: 4.44%
None: 40.00%
需求讨论与材料提供: 8.89%
预算与立项推动: 2.22%
策略制定与执行: 8.89%

View File

@ -0,0 +1,10 @@
完成需求确认与收集
完成技术评估与测试
完成商务谈判与合同准备
完成内部审批与预算确认
完成项目立项与采购流程
完成关系建立与维护
完成市场调研与竞争分析
完成产品推广与市场活动
完成技术支持与售后服务
完成续约与增购谈判

View File

@ -0,0 +1,44 @@
Stage: PoC Won/Bidding+Negotiation
完成需求确认与收集: 1.43%
完成技术评估与测试: 2.86%
完成商务谈判与合同准备: 0.00%
完成内部审批与预算确认: 0.00%
完成项目立项与采购流程: 1.43%
完成关系建立与维护: 0.00%
完成市场调研与竞争分析: 2.86%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 0.00%
Stage: Qualification
完成需求确认与收集: 1.69%
完成技术评估与测试: 1.69%
完成商务谈判与合同准备: 1.69%
完成内部审批与预算确认: 1.69%
完成项目立项与采购流程: 0.00%
完成关系建立与维护: 0.00%
完成市场调研与竞争分析: 1.69%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 0.00%
Stage: Closed Won
完成需求确认与收集: 0.00%
完成技术评估与测试: 0.00%
完成商务谈判与合同准备: 3.85%
完成内部审批与预算确认: 0.00%
完成项目立项与采购流程: 0.00%
完成关系建立与维护: 3.85%
完成市场调研与竞争分析: 0.00%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 3.85%
Stage: Evaluation
完成需求确认与收集: 2.22%
完成技术评估与测试: 4.44%
完成商务谈判与合同准备: 0.00%
完成内部审批与预算确认: 0.00%
完成项目立项与采购流程: 2.22%
完成关系建立与维护: 0.00%
完成市场调研与竞争分析: 4.44%
完成产品推广与市场活动: 0.00%
完成技术支持与售后服务: 0.00%
完成续约与增购谈判: 0.00%

View File

@ -0,0 +1,137 @@
import pandas as pd
from typing import List
from openpyxl import Workbook
from AgentProxy import AgentProxy
api_key = 'c6bbe7f48063a2c1'
api_secret = '5f8e7d3a97465cc099bf19bd1b70c266'
assistant_id = "66bb09a84673b57506fe7bbd"
agent = AgentProxy(assistant_id, api_key, api_secret)
# Stage: Evaluation
# 客户接触与需求识别: 188.89%
# 项目支持与优化: 91.11%
# 产品演示与方案提供: 80.00%
# 市场分析与策略调整: 80.00%
# Stage: Qualification
# 客户接触与需求识别: 154.24%
# 项目支持与优化: 144.07%
# 商务谈判与合同准备: 113.56%
# 内部协调与支持: 83.05%
# Stage: Bidding+Negotiation
# 商务谈判与合同准备: 162.86%
# 客户接触与需求识别: 130.00%
# 项目支持与优化: 125.71%
# 内部协调与支持: 111.43%
# Stage: Closed Won
# 商务谈判与合同准备: 130.77%
# 内部协调与支持: 123.08%
# 项目支持与优化: 123.08%
# 合同审查与订单处理: 115.38%
most_frequent_actions = {
"Evaluation": [
"客户接触与需求识别",
"项目支持与优化",
"产品演示与方案提供",
"市场分析与策略调整"
],
"Qualification": [
"客户接触与需求识别",
"项目支持与优化",
"商务谈判与合同准备",
"内部协调与支持"
],
"Bidding+Negotiation": [
"商务谈判与合同准备",
"客户接触与需求识别",
"项目支持与优化",
"内部协调与支持"
],
"Closed Won": [
"商务谈判与合同准备",
"内部协调与支持",
"项目支持与优化",
"合同审查与订单处理"
]
}
# Stage: Evaluation
# 完成技术评估与测试: 4.44%
# 完成市场调研与竞争分析: 4.44%
# 完成需求确认与收集: 2.22%
# 完成项目立项与采购流程: 2.22%
# Stage: Qualification
# 完成需求确认与收集: 1.69%
# 完成技术评估与测试: 1.69%
# 完成商务谈判与合同准备: 1.69%
# 完成内部审批与预算确认: 1.69%
# Stage: Bidding+Negotiation
# 完成技术评估与测试: 2.86%
# 完成市场调研与竞争分析: 2.86%
# 完成需求确认与收集: 1.43%
# 完成项目立项与采购流程: 1.43%
# Stage: Closed Won
# 完成商务谈判与合同准备: 3.85%
# 完成关系建立与维护: 3.85%
# 完成续约与增购谈判: 3.85%
# 完成需求确认与收集: 0.00%
top_action_results = {
"Evaluation": [
"完成技术评估与测试",
"完成市场调研与竞争分析",
"完成需求确认与收集",
"完成项目立项与采购流程"
],
"Qualification": [
"完成需求确认与收集",
"完成技术评估与测试",
"完成商务谈判与合同准备",
"完成内部审批与预算确认"
],
"Bidding+Negotiation": [
"完成需求确认与收集",
"完成技术评估与测试",
"完成项目立项与采购流程",
"完成市场调研与竞争分析"
],
"Closed Won": [
"完成商务谈判与合同准备",
"完成关系建立与维护",
"完成续约与增购谈判",
"完成需求确认与收集"
],
}
stages = ["Evaluation", "Qualification", "Bidding+Negotiation", "Closed Won"]
for stage in stages:
print(f"Stage: {stage}")
prompt = f"""
任务
你作为一个资深的销售领域专家下面的输入数据给出了销售阶段该销售阶段最频繁的销售行动该销售阶段最top的行动结果
分析
1. 销售的行动和结果是否匹配和相关
2. 销售的行动和结果是否正相关是否存在gap
3. 销售的行动和结果是否和当前的销售阶段相匹配
输入
销售阶段{stage}
最频繁的销售行动{most_frequent_actions[stage]}
最top的行动结果{top_action_results[stage]}
输出
按照上述分析要点给出的分析结果和分析报告
"""
print(agent.send_message(prompt))

38
llm_analyze_acv_dist.py Normal file
View File

@ -0,0 +1,38 @@
import pandas as pd
from typing import List
from openpyxl import Workbook
from AgentProxy import AgentProxy
api_key = 'c6bbe7f48063a2c1'
api_secret = '5f8e7d3a97465cc099bf19bd1b70c266'
assistant_id = "66bb09a84673b57506fe7bbd"
agent = AgentProxy(assistant_id, api_key, api_secret)
prompt = f"""
任务
请根据以下未成单商机预估ACV分布数据按照分析要点进行数据分析和解读并给出分析报告
要点
1. 以销售专家的视角分析上述数据并给出洞见
2. 分析是否有可能完成销售目标并给出原因和分析过程如果有可以提升改进的点也请给出
3. 分析上述构成是否存在潜在问题如有请给出原因和改进措施
4. 分析上述数据是否可以作为销售策略的参考并给出原因和分析过程
请注意销售每个单子所要付出的effort是基本相同的
输入
ACV金额分布
客户行业 <100 100-500 >500
Total 435,563,056.58 421,007,400.89 178,094,693.04
ACV单子数量分布
客户行业 <100 100-500 >500
Total 1311 249 22
销售目标人均任务ACV 500-600
输出
按照上述要点给出分析报告
"""
print(agent.send_message(prompt))

View File

@ -0,0 +1,164 @@
from AgentProxy import AgentProxy
api_key = 'c6bbe7f48063a2c1'
api_secret = '5f8e7d3a97465cc099bf19bd1b70c266'
assistant_id = "66bb09a84673b57506fe7bbd"
agent = AgentProxy(assistant_id, api_key, api_secret)
text_won = """
客户行业 ACVSUM 占比 ACVCNT 占比
银行 175888600 50.62% 105 24.53%
证券基金 24932854 7.18% 47 10.98%
公共事业 12798197 3.68% 29 6.78%
保险 39237141 11.29% 29 6.78%
能源电力 3905334 1.12% 9 2.10%
物流/交通 10177672 2.93% 23 5.37%
制造/汽车 15018443 4.32% 27 6.31%
运营商 19638038 5.65% 26 6.07%
零售 14976953 4.31% 36 8.41%
互联网+ 16770817 4.83% 68 15.89%
其他 3853000 1.11% 8 1.87%
互金 8386816 2.41% 16 3.74%
ISV 46400 0.01% 2 0.47%
国央企 0 0.00% 0 0.00%
媒体/文娱 1019133 0.29% 2 0.47%
石油 0 0.00% 0 0.00%
国企 0 0.00% 0 0.00%
资产管理 0 0.00% 0 0.00%
政府 0 0.00% 0 0.00%
服务 0 0.00% 0 0.00%
医疗 0 0.00% 0 0.00%
云服务 0 0.00% 0 0.00%
央企招商局 0 0.00% 0 0.00%
农业 0 0.00% 0 0.00%
金融租赁 0 0.00% 0 0.00%
教育 0 0.00% 0 0.00%
融资担保 0 0.00% 0 0.00%
高科技 0 0.00% 0 0.00%
公共卫生 0 0.00% 0 0.00%
农林牧渔 0 0.00% 0 0.00%
教育/科研 792000 0.23% 1 0.23%
物流/交通/出行 0 0.00% 0 0.00%
电信/网络/云服务商 0 0.00% 0 0.00%
媒体/视频/文娱 0 0.00% 0 0.00%
社交/门户/在线服务 0 0.00% 0 0.00%
消费金融公司 0 0.00% 0 0.00%
游戏 0 0.00% 0 0.00%
零售/电商/消费品 0 0.00% 0 0.00%
Total 347441398 1 428 1
"""
text_pipeline = """
Pipeline
客户行业 预估ACVSUM 占比 预估ACVCNT 占比
银行 435192472 42.09% 403 25.39%
证券基金 96413873 9.33% 209 13.17%
公共事业 76163399 7.37% 154 9.70%
保险 73039728 7.06% 77 4.85%
能源电力 65098557 6.30% 91 5.73%
物流/交通 54499388 5.27% 95 5.99%
制造/汽车 45458488 4.40% 104 6.55%
运营商 41493666 4.01% 81 5.10%
零售 35260799 3.41% 93 5.86%
互联网+ 33295017 3.22% 112 7.06%
其他 25413146 2.46% 64 4.03%
互金 24768317 2.40% 46 2.90%
ISV 8490800 0.82% 10 0.63%
国央企 4866700 0.47% 7 0.44%
媒体/文娱 3066800 0.30% 11 0.69%
石油 2540000 0.25% 4 0.25%
国企 2402000 0.23% 4 0.25%
资产管理 1000000 0.10% 1 0.06%
政府 990000 0.10% 2 0.13%
服务 980000 0.09% 2 0.13%
医疗 700000 0.07% 2 0.13%
云服务 610000 0.06% 5 0.32%
央企招商局 500000 0.05% 1 0.06%
农业 450000 0.04% 2 0.13%
金融租赁 300000 0.03% 1 0.06%
教育 300000 0.03% 1 0.06%
融资担保 200000 0.02% 1 0.06%
高科技 153891 0.01% 1 0.06%
公共卫生 150000 0.01% 1 0.06%
农林牧渔 100000 0.01% 1 0.06%
教育/科研 0 0.00% 0 0.00%
物流/交通/出行 0 0.00% 0 0.00%
电信/网络/云服务商 0 0.00% 0 0.00%
媒体/视频/文娱 0 0.00% 0 0.00%
社交/门户/在线服务 0 0.00% 0 0.00%
消费金融公司 0 0.00% 1 0.06%
游戏 0 0.00% 0 0.00%
零售/电商/消费品 0 0.00% 0 0.00%
Total 1033897041 1 1587 1
"""
# You can also store this string in a variable if needed
# df_text = df_str
prompt_won = f"""
任务
请根据以下输入的数据按照以下要点以及背景知识进行数据分析和解读并给出分析结果
背景知识
行业贡献可以理解为ACV和预估ACV的金额大小金额越大则通常该行业的市场潜力和对公司的销售贡献越大
行业effort可以理解为订单的数量订单数量越多则通常该行业的销售努力程度越大此处一个潜在假定是每个订单的所要付出的effort是接近的无论其金额大小
要点
1. 根据单子的金额数据分析行业贡献
2. 根据单子的数量数据分析行业effort
3. 分析行业贡献和行业effort的关系是否存在正相关关系是否存在付出了较大effort的行业贡献却很小以及付出了较小effort的行业贡献却很大
4. 分析行业平均单子金额分析平均单子金额较大的行业
5. 依据你作为一个销售领域专家的身份给出上述要点没有覆盖到的洞见
输入
已成单数据
{text_won}
输出
按照上述要点给出分析结果
"""
print(agent.send_message(prompt_won))
prompt_pipeline = f"""
任务
请根据以下输入的数据按照以下要点以及背景知识进行数据分析和解读并给出分析结果
背景知识
行业贡献可以理解为ACV和预估ACV的金额大小金额越大则通常该行业的市场潜力和对公司的销售贡献越大
行业effort可以理解为订单的数量订单数量越多则通常该行业的销售努力程度越大此处一个潜在假定是每个订单的所要付出的effort是接近的无论其金额大小
要点
1. 根据单子的金额数据分析行业贡献
2. 根据单子的数量数据分析行业effort
3. 分析行业贡献和行业effort的关系是否存在正相关关系是否存在付出了较大effort的行业贡献却很小以及付出了较小effort的行业贡献却很大
4. 分析行业平均单子金额分析平均单子金额较大的行业
5. 依据你作为一个销售领域专家的身份给出上述要点没有覆盖到的洞见
输入
未成单商机数据
{text_pipeline}
输出
按照上述要点给出分析结果
"""
print(agent.send_message(prompt_pipeline))
prompt_won_pipeline_comparison = f"""
任务
请根据以下输入的数据按照以下要点以及背景知识进行数据分析和解读并给出分析结果
背景知识
行业贡献可以理解为ACV和预估ACV的金额大小金额越大则通常该行业的市场潜力和对公司的销售贡献越大
行业effort可以理解为订单的数量订单数量越多则通常该行业的销售努力程度越大此处一个潜在假定是每个订单的所要付出的effort是接近的无论其金额大小
要点
1. 分析已成单数据和未成单商机数据对比的不同之处
2. 分析已成单数据和未成单商机数据的趋势变化ACV产出的预计变化
3. 分析已成单数据和未成单商机数据的effort变化跟进单子数量的趋势变化
4. 分析已成单数据和未成单商机数据的平均单子大小的变化行业比行业看行业跟进单子大小趋势变化
输入
已成单数据
{text_won}
未成单商机数据
{text_pipeline}
输出
按照上述要点给出分析结果
"""
print(agent.send_message(prompt_won_pipeline_comparison))

126
llm_criteria_reflection.py Normal file
View File

@ -0,0 +1,126 @@
# This Python file uses the following encoding: utf-8
"""
File: criteria_reflection.py
Description: 以专业咨询机构的赢单路径为参考结合公司实际统计数据进行反思提出改进版本的赢单路径
Author: [Your Name]
Date: [Current Date]
"""
from AgentProxy import AgentProxy
import pandas as pd
df_custom = pd.read_excel('./data_doc/销售策略制定框架模板V3.0-赢单路径-AI.xlsx')
df_pro = pd.read_excel('./data_doc/销售策略制定框架模板V3.0-赢单路径- Manual.xlsx')
api_key = 'c6bbe7f48063a2c1'
api_secret = '5f8e7d3a97465cc099bf19bd1b70c266'
assistant_id = "66bb09a84673b57506fe7bbd"
agent = AgentProxy(assistant_id, api_key, api_secret)
reflection_path = [] # 记录反思后的赢单路径
# # Iterate over professional_won_path and get index in the loop
for index, pro_stage in df_pro.iterrows():
# Get the corresponding row from df_custom
custom_stage = df_custom.iloc[index] if index < len(df_custom) else pd.Series()
reflection_stage = pro_stage.copy()
print(f"Index: {index}")
# print(f"---pro_stage---")
# print(f"销售阶段名称: {pro_stage['销售阶段名称']}")
# print(f"销售阶段任务: {pro_stage['销售阶段任务']}")
# print(f"销售关键动作: {pro_stage['销售关键动作']}")
# print(f"阶段转化标准: {pro_stage['阶段转化标准']}")
# print(f"---custom_stage---")
# print(f"销售阶段名称: {custom_stage['销售阶段名称']}")
# print(f"销售阶段任务: {custom_stage['销售阶段任务']}")
# print(f"销售关键动作: {custom_stage['销售关键动作']}")
# print(f"阶段转化标准: {custom_stage['阶段转化标准']}")
# 反思销售阶段任务
prompt_reflection_task = f"""
任务
根据当前的销售阶段 {pro_stage['销售阶段名称']}
以专业咨询机构提出的销售阶段任务为参考和蓝本结合客户自行总结的销售任务提出改进版本的销售阶段任务注意尽可能以专业机构的版本为主语言风格也按照专业机构的版本
若客户自行总结的销售阶段任务为空或没有内容则直接使用专业咨询机构提出的销售阶段任务
输入
当前的销售阶段
{pro_stage['销售阶段名称']}
专业咨询机构提出的销售阶段任务
{pro_stage['销售阶段任务']}
客户自行总结的销售任务
{custom_stage['销售阶段任务']}
输出
反思后的销售阶段任务以及反思后的销售阶段任务与专业咨询机构提出的销售阶段任务的差异以及该改进的方法依据逻辑等
"""
print(f"prompt_reflection_task: {prompt_reflection_task}")
reflection_task = agent.send_message(prompt_reflection_task)
print(f"反思后的销售阶段任务: {reflection_task}")
reflection_stage['销售阶段任务'] = reflection_task
# 反思销售关键动作
prompt_reflection_action = f"""
任务
根据当前的销售阶段 {pro_stage['销售阶段名称']}
以专业咨询机构提出的销售关键动作为参考和蓝本结合客户自行总结的销售关键动作提出改进版本的销售关键动作注意尽可能以专业机构的版本为主语言风格也比照专业机构的版本
若结合客户自行总结的销售关键动作为空或没有内容则直接使用专业咨询机构提出的销售关键动作
输入
当前的销售阶段
{pro_stage['销售阶段名称']}
专业咨询机构提出的销售关键动作
{pro_stage['销售关键动作']}
通过客户自行总结得到的销售关键动作
{custom_stage['销售关键动作']}
输出
反思后的销售关键动作以及反思后的销售关键动作与专业咨询机构提出的销售关键动作的差异以及该改进的方法依据逻辑等
"""
print(f"prompt_reflection_action: {prompt_reflection_action}")
reflection_action = agent.send_message(prompt_reflection_action)
print(f"反思后的销售关键动作: {reflection_action}")
reflection_stage['销售关键动作'] = reflection_action
# 反思阶段转化标准
prompt_reflection_standard = f"""
任务
根据当前的销售阶段 {pro_stage['销售阶段名称']}
以专业咨询机构提出的阶段转化标准为参考和蓝本结合客户自行总结的阶段转化标准提出改进版本的阶段转化标准注意尽可能以专业机构的版本为主语言风格也比照专业机构的版本
若通过客户自行总结得到的阶段转化标准为空或没有内容则直接使用专业咨询机构提出的阶段转化标准
输入
当前的销售阶段
{pro_stage['销售阶段名称']}
专业咨询机构提出的阶段转化标准
{pro_stage['阶段转化标准']}
通过客户自行总结得到的阶段转化标准
{custom_stage['阶段转化标准']}
输出
反思后的阶段转化标准以及反思后的阶段转化标准与专业咨询机构提出的阶段转化标准的差异以及该改进的方法依据逻辑等
"""
print(f"prompt_reflection_standard: {prompt_reflection_standard}")
reflection_standard = agent.send_message(prompt_reflection_standard)
print(f"反思后的阶段转化标准: {reflection_standard}")
reflection_stage['阶段转化标准'] = reflection_standard
reflection_path.append(reflection_stage)
# Write reflection_path to Excel
df = pd.DataFrame(reflection_path)
# Reorder columns to match the original structure
column_order = [
"销售阶段名称", "客户采购行为", "销售阶段任务", "关键获取信息",
"销售关键动作", "售前关键动作", "客户支持行为", "阶段转化标准"
]
df = df.reindex(columns=column_order)
# Write to Excel
excel_file_path = 'reflection_path_results_v2.xlsx'
df.to_excel(excel_file_path, index=False)
print(f"Reflection path results have been written to {excel_file_path}")

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,24 @@
from linguistic_checker import LinguisticChecker
import pandas as pd
api_key = '25bda2c39c0f8ca0'
api_secret = 'e0008b9b9727cb8ceea5a132dbe62495'
assistant_id = "66bb09a84673b57506fe7bbd"
checker = LinguisticChecker(api_key, api_secret, assistant_id)
df = pd.read_excel('./data_src/pingcap_pipeline.xlsx')
# Iterate over the DataFrame
for index, row in df.iterrows():
try:
# Assuming 'CRM Field' and 'User Input' are column names in the Excel file
# Adjust these names if they're different in your actual file
crm_field = row['CRM Field']
user_input = row['User Input']
# Check the input using the LinguisticChecker
result = checker.check_input(crm_field, user_input)
except Exception as e:
print(f"Error processing row {index}: {str(e)}")
result = None

Binary file not shown.