You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
8.0 KiB
191 lines
8.0 KiB
# -*- coding: utf-8 -*-
|
|
import random
|
|
import time
|
|
from xmlrpc.client import ServerProxy, Fault
|
|
|
|
is_local = 0
|
|
if is_local:
|
|
url = 'http://127.0.0.1:28888'
|
|
else:
|
|
url = 'http://192.168.31.41:32000'
|
|
|
|
username = 'rpc'
|
|
password = 'aaaAAA111'
|
|
db = "quantify"
|
|
|
|
common = ServerProxy(f"{url}/xmlrpc/2/common")
|
|
uid = common.authenticate(db, username, password, {})
|
|
|
|
models = ServerProxy(f"{url}/xmlrpc/2/object")
|
|
|
|
# 1. 在 alpha.generate.research.direction 表中创建一条数据
|
|
# 需要准备: region_id 和 universe_id
|
|
|
|
region = 'USA'
|
|
universe = 'TOP3000'
|
|
|
|
# 根据名称搜索 region 和 universe 的ID
|
|
region_ids = models.execute_kw(db, uid, password, 'alpha.region.settings', 'search', [[['name', '=', region]]], {'limit': 1})
|
|
universe_ids = models.execute_kw(db, uid, password, 'alpha.universe.settings', 'search', [[['name', '=', universe]]], {'limit': 1})
|
|
|
|
if not region_ids:
|
|
print(f"没有找到 region: '{region}',请检查名称是否正确")
|
|
exit(1)
|
|
if not universe_ids:
|
|
print(f"没有找到 universe: '{universe}',请检查名称是否正确")
|
|
exit(1)
|
|
|
|
region_id = region_ids[0]
|
|
universe_id = universe_ids[0]
|
|
|
|
# 获取 region 和 universe 的 name
|
|
region_data = models.execute_kw(db, uid, password, 'alpha.region.settings', 'read', [[region_id], ['name']])
|
|
universe_data = models.execute_kw(db, uid, password, 'alpha.universe.settings', 'read', [[universe_id], ['name']])
|
|
region_name = region_data[0]['name'] if region_data else 'Unknown'
|
|
universe_name = universe_data[0]['name'] if universe_data else 'Unknown'
|
|
|
|
print(f"使用 region_id: {region_id} (name: {region_name}), universe_id: {universe_id} (name: {universe_name})")
|
|
|
|
# 随机选择一个 llm_settings_line_id
|
|
llm_line_ids = models.execute_kw(db, uid, password, 'llm.settings.line', 'search', [[['id', '!=', 0]]])
|
|
if not llm_line_ids:
|
|
print("没有找到 llm.settings.line 记录")
|
|
exit(1)
|
|
|
|
llm_settings_line_id = random.choice(llm_line_ids)
|
|
llm_line_data = models.execute_kw(db, uid, password, 'llm.settings.line', 'read', [[llm_settings_line_id], ['display_name', 'model_name']])
|
|
llm_display_name = llm_line_data[0].get('display_name', 'Unknown') if llm_line_data else 'Unknown'
|
|
print(f"随机选择 llm_settings_line_id: {llm_settings_line_id} (name: {llm_display_name})")
|
|
|
|
# 搜索 Research Direction Prompt
|
|
rd_prompt_ids = models.execute_kw(db, uid, password, 'alpha.prompt.settings', 'search', [[['prompt_type', '=', 'Research Direction']]], {'limit': 1})
|
|
if not rd_prompt_ids:
|
|
print("没有找到 prompt_type='Research Direction' 的 alpha.prompt.settings 记录")
|
|
exit(1)
|
|
research_direction_prompt_id = rd_prompt_ids[0]
|
|
print(f"使用 Research Direction Prompt ID: {research_direction_prompt_id}")
|
|
|
|
# 搜索 Feature Engineering Prompt
|
|
fe_prompt_ids = models.execute_kw(db, uid, password, 'alpha.prompt.settings', 'search', [[['prompt_type', '=', 'Feature Engineering']]], {'limit': 1})
|
|
if not fe_prompt_ids:
|
|
print("没有找到 prompt_type='Feature Engineering' 的 alpha.prompt.settings 记录")
|
|
exit(1)
|
|
feature_engineering_prompt_id = fe_prompt_ids[0]
|
|
print(f"使用 Feature Engineering Prompt ID: {feature_engineering_prompt_id}")
|
|
|
|
# 创建研究方向记录
|
|
record_vals = {
|
|
'region': region_id,
|
|
'universe': universe_id,
|
|
'llm_settings_line_id': llm_settings_line_id,
|
|
'research_direction_prompt': research_direction_prompt_id,
|
|
'feature_engineering_prompt': feature_engineering_prompt_id,
|
|
}
|
|
|
|
record_id = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'create', [record_vals])
|
|
print(f"成功创建研究方向记录,ID: {record_id}")
|
|
|
|
# 2. 调用 btn_quick_selection_datasets 按钮方法
|
|
result = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'btn_quick_selection_datasets', [[record_id]])
|
|
print(f"btn_quick_selection_datasets 执行结果: {result}")
|
|
|
|
# 验证数据集行是否已创建
|
|
datasets_line_ids = models.execute_kw(db, uid, password, 'alpha.research.datasets.line', 'search', [[['research_direction_id', '=', record_id]]])
|
|
print(f"已创建的数据集行数量: {len(datasets_line_ids)}")
|
|
|
|
# 获取数据集行的 dataset_code(数据集名字)
|
|
if datasets_line_ids:
|
|
datasets_lines = models.execute_kw(db, uid, password, 'alpha.research.datasets.line', 'read', [datasets_line_ids, ['datasets_code']])
|
|
dataset_codes = [line.get('datasets_code') for line in datasets_lines if line.get('datasets_code')]
|
|
print(f"关联的数据集名字: {dataset_codes}")
|
|
print(f"数据集总数: {len(dataset_codes)}")
|
|
|
|
|
|
# 3. 点击 btn_generate_research 按钮
|
|
print("\n开始生成研究方向...")
|
|
try:
|
|
result = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'btn_generate_research', [[record_id]])
|
|
print(f"btn_generate_research 执行结果: {result}")
|
|
except Fault as e:
|
|
# 忽略 "cannot marshal None" 错误,因为方法返回 None 是正常的
|
|
if "cannot marshal None" in str(e):
|
|
print("btn_generate_research 已执行(返回 None,这是正常的)")
|
|
else:
|
|
raise
|
|
|
|
# 死循环等待 status = 'generated_research'
|
|
print("等待研究方向生成完成...")
|
|
while True:
|
|
time.sleep(5) # 每5秒检查一次
|
|
record_data = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'read', [[record_id], ['status', 'message']])
|
|
if not record_data:
|
|
print("记录不存在")
|
|
exit(1)
|
|
current_status = record_data[0].get('status')
|
|
message = record_data[0].get('message', '')
|
|
print(f"当前状态: {current_status}, 消息: {message}")
|
|
|
|
if current_status == 'generated_research':
|
|
print("研究方向生成完成!")
|
|
break
|
|
elif current_status == 'failed':
|
|
print(f"研究方向生成失败: {message}")
|
|
exit(1)
|
|
|
|
# 4. 点击 btn_generate_prepare_feature_engineering_prompt 按钮
|
|
print("\n开始生成特征工程提示词...")
|
|
try:
|
|
result = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'btn_generate_prepare_feature_engineering_prompt', [[record_id]])
|
|
print(f"btn_generate_prepare_feature_engineering_prompt 执行结果: {result}")
|
|
except Fault as e:
|
|
# 忽略 "cannot marshal None" 错误,因为方法返回 None 是正常的
|
|
if "cannot marshal None" in str(e):
|
|
print("btn_generate_prepare_feature_engineering_prompt 已执行(返回 None,这是正常的)")
|
|
else:
|
|
raise
|
|
|
|
# 5. 点击 btn_generate_feature 按钮
|
|
print("\n开始生成特征工程...")
|
|
try:
|
|
result = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'btn_generate_feature', [[record_id]])
|
|
print(f"btn_generate_feature 执行结果: {result}")
|
|
except Fault as e:
|
|
# 忽略 "cannot marshal None" 错误,因为方法返回 None 是正常的
|
|
if "cannot marshal None" in str(e):
|
|
print("btn_generate_feature 已执行(返回 None,这是正常的)")
|
|
else:
|
|
raise
|
|
|
|
# 死循环等待 status = 'done'
|
|
print("等待特征工程生成完成...")
|
|
while True:
|
|
time.sleep(5) # 每5秒检查一次
|
|
record_data = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'read', [[record_id], ['status', 'message']])
|
|
if not record_data:
|
|
print("记录不存在")
|
|
exit(1)
|
|
current_status = record_data[0].get('status')
|
|
message = record_data[0].get('message', '')
|
|
print(f"当前状态: {current_status}")
|
|
|
|
if current_status == 'done':
|
|
print("特征工程生成完成!")
|
|
break
|
|
elif current_status == 'failed':
|
|
print(f"特征工程生成失败: {message}")
|
|
exit(1)
|
|
|
|
# 6. 点击 btn_generate_idea 按钮
|
|
print("\n开始生成 Idea...")
|
|
try:
|
|
result = models.execute_kw(db, uid, password, 'alpha.generate.research.direction', 'btn_generate_idea', [[record_id]])
|
|
print(f"btn_generate_idea 执行结果: {result}")
|
|
except Fault as e:
|
|
# 忽略 "cannot marshal None" 错误,因为方法返回 None 是正常的
|
|
if "cannot marshal None" in str(e):
|
|
print("btn_generate_idea 已执行(返回 None,这是正常的)")
|
|
else:
|
|
raise
|
|
|
|
print("\n全部流程执行完成!收工!")
|
|
|
|
|