26 lines
855 B
Python
26 lines
855 B
Python
from crazy_functions.json_fns.pydantic_io import GptJsonIO, JsonStringError
|
|
|
|
def structure_output(txt, prompt, err_msg, run_gpt_fn, pydantic_cls):
|
|
gpt_json_io = GptJsonIO(pydantic_cls)
|
|
analyze_res = run_gpt_fn(
|
|
txt,
|
|
sys_prompt=prompt + gpt_json_io.format_instructions
|
|
)
|
|
try:
|
|
friend = gpt_json_io.generate_output_auto_repair(analyze_res, run_gpt_fn)
|
|
except JsonStringError as e:
|
|
return None, err_msg
|
|
|
|
err_msg = ""
|
|
return friend, err_msg
|
|
|
|
|
|
def select_tool(prompt, run_gpt_fn, pydantic_cls):
|
|
pydantic_cls_instance, err_msg = structure_output(
|
|
txt=prompt,
|
|
prompt="根据提示, 分析应该调用哪个工具函数\n\n",
|
|
err_msg=f"不能理解该联系人",
|
|
run_gpt_fn=run_gpt_fn,
|
|
pydantic_cls=pydantic_cls
|
|
)
|
|
return pydantic_cls_instance, err_msg |