fe97de4e04
6.19 Agent迁移 连接
72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
import json
|
|
from extraction_info import info_data_json
|
|
from langchain_neo4j import nl_query_to_function_call
|
|
from vector_lab import intersection_of_three_lists
|
|
from chains_lab import Problem_rewrite
|
|
from utils import find_target_item, find_target_items, pre_mapping
|
|
|
|
problem_rewrite = Problem_rewrite()
|
|
|
|
# 读取JSON文件
|
|
with open(info_data_json, "r", encoding="utf-8") as f:
|
|
json_data = json.load(f)
|
|
|
|
while True:
|
|
input_str = input("请输入查询内容(输入 'exit' 退出):")
|
|
if input_str.lower() == 'exit':
|
|
print("程序结束。")
|
|
break
|
|
|
|
try:
|
|
results = intersection_of_three_lists(input_str)
|
|
if not results:
|
|
print("未找到相关指标,请重新输入。")
|
|
continue
|
|
|
|
retriever = results[0]
|
|
keywords = problem_rewrite.invoke({"query": input_str, "retriever": retriever})
|
|
input_neo4j = pre_mapping(keywords, json_data)
|
|
|
|
print(f"Neo4j 问题理解: {input_neo4j}")
|
|
print(f"Neo4j 查询输入: {retriever}")
|
|
|
|
temp_result = None
|
|
for item in json_data:
|
|
if item["指标名称"] == retriever:
|
|
temp_result = item
|
|
break
|
|
|
|
if temp_result:
|
|
if temp_result["code"] == "":
|
|
question = {
|
|
"type": "query",
|
|
"value": input_neo4j,
|
|
}
|
|
result = nl_query_to_function_call(question)
|
|
|
|
if result["message"] == "成功":
|
|
code_result = result["data"]["code"]
|
|
temp_result["code"] = code_result
|
|
|
|
# 更新JSON文件
|
|
with open(info_data_json, "w", encoding="utf-8") as f:
|
|
json.dump(json_data, f, ensure_ascii=False, indent=4)
|
|
|
|
print(f"已更新 code 字段: {code_result}")
|
|
else:
|
|
print(f"查询失败:{result}")
|
|
else:
|
|
question = {
|
|
"type": "code",
|
|
"value": temp_result["code"],
|
|
}
|
|
result = nl_query_to_function_call(question)
|
|
print(f"查询结果:{result}")
|
|
|
|
else:
|
|
print("未找到对应的指标。")
|
|
|
|
except Exception as e:
|
|
print(f"发生错误:{e}")
|
|
|
|
|