|
|
# agent/sql/exec.py
|
|
|
from config import *
|
|
|
from agent.llm_client import create_chat_completion
|
|
|
|
|
|
def async_llm_chain_call(messages, model=MODEL, tree_node=ASYNC_LLM_TIME):
|
|
|
"""
|
|
|
使用 multiprocessing.Pool 并行调用 API 接口
|
|
|
"""
|
|
|
# tree node 1
|
|
|
response_1 = create_chat_completion(messages,tempt=0)
|
|
|
node_1 = response_1.choices[0].message.content
|
|
|
# tree node 2
|
|
|
node_2_prompt = f"""你根据历史信息以及基于上文信息生成的回复进行一步步思考判断,生成比回复更好的(且明显不同),能解决上文信息的回复。如果你不能给出更好且明显不同的回复,只需回复我<已经是最优回复>
|
|
|
主要判断的几个方向:1.使用的内容(比如字段)是否存在上文信息中的,而不是凭空捏造。2.字段的用法是否符合上文信息的要求。
|
|
|
这是上文信息:
|
|
|
{messages}
|
|
|
--------------
|
|
|
回复:
|
|
|
{node_1}
|
|
|
--------------
|
|
|
只需输出回复,不需要分析的过程。如果你不能给出更好的且明显不同回复,只需回复我<已经是最优回复>:
|
|
|
"""
|
|
|
response_2 = create_chat_completion(messages,tempt=0)
|
|
|
node_2 = response_2.choices[0].message.content
|
|
|
if "最优回复" in node_2 or str(node_1) == str(node_2):
|
|
|
if DEBUG_VER == 3:
|
|
|
print(f"------------>node1已是最优回复:{node_1}")
|
|
|
return response_1
|
|
|
_sorted_results = {}
|
|
|
_sorted_results[1] = node_1
|
|
|
_sorted_results[2] = node_2
|
|
|
idx_ = get_best(messages, _sorted_results)
|
|
|
if DEBUG_VER == 3:
|
|
|
print(f"------------>idx_:{idx_}")
|
|
|
if idx_ == 1:
|
|
|
return response_1
|
|
|
elif idx_ == 2:
|
|
|
return response_2
|
|
|
else:
|
|
|
return response_1
|
|
|
return response_1
|
|
|
|
|
|
def get_best(messages, sorted_results):
|
|
|
prompt = f"""根据上分信息,判断回复1和回复2哪个更优(是否满足上文信息的需求)。
|
|
|
主要判断的几个方向:1.使用的内容(比如字段)是否存在上文信息中的,而不是凭空捏造。2.字段的用法是否符合上文信息的要求。
|
|
|
--------------
|
|
|
上文信息:
|
|
|
{str(messages)}
|
|
|
--------------
|
|
|
回复1:
|
|
|
{sorted_results[1]}
|
|
|
--------------
|
|
|
回复2:
|
|
|
{sorted_results[2]}
|
|
|
仅输出1还是2,不需要判断过程:"""
|
|
|
if DEBUG_VER == 3:
|
|
|
print(f"------->prompt:{prompt}")
|
|
|
messages = [{"role": "user", "content": prompt}]
|
|
|
response = create_chat_completion(messages,tempt=0)
|
|
|
answer = response.choices[0].message.content
|
|
|
if "1" in answer:
|
|
|
return 1
|
|
|
elif "2" in answer:
|
|
|
return 2
|
|
|
else:
|
|
|
print(f"---->get_best异常:{answer}")
|
|
|
return 1 |