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.

67 lines
2.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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