| |
|
| | from crazy_functions.json_fns.pydantic_io import GptJsonIO, JsonStringError |
| | from request_llms.bridge_all import predict_no_ui_long_connection |
| | def get_code_block(reply): |
| | import re |
| | pattern = r"```([\s\S]*?)```" |
| | matches = re.findall(pattern, reply) |
| | if len(matches) == 1: |
| | return "```" + matches[0] + "```" |
| | raise RuntimeError("GPT is not generating proper code.") |
| |
|
| | def is_same_thing(a, b, llm_kwargs): |
| | from pydantic import BaseModel, Field |
| | class IsSameThing(BaseModel): |
| | is_same_thing: bool = Field(description="determine whether two objects are same thing.", default=False) |
| | |
| | def run_gpt_fn(inputs, sys_prompt, history=[]): |
| | return predict_no_ui_long_connection( |
| | inputs=inputs, llm_kwargs=llm_kwargs, |
| | history=history, sys_prompt=sys_prompt, observe_window=[] |
| | ) |
| |
|
| | gpt_json_io = GptJsonIO(IsSameThing) |
| | inputs_01 = "Identity whether the user input and the target is the same thing: \n target object: {a} \n user input object: {b} \n\n\n".format(a=a, b=b) |
| | inputs_01 += "\n\n\n Note that the user may describe the target object with a different language, e.g. cat and 猫 are the same thing." |
| | analyze_res_cot_01 = run_gpt_fn(inputs_01, "", []) |
| | |
| | inputs_02 = inputs_01 + gpt_json_io.format_instructions |
| | analyze_res = run_gpt_fn(inputs_02, "", [inputs_01, analyze_res_cot_01]) |
| |
|
| | try: |
| | res = gpt_json_io.generate_output_auto_repair(analyze_res, run_gpt_fn) |
| | return res.is_same_thing |
| | except JsonStringError as e: |
| | return False |