| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | import timeimport loggingfrom app.schemas.runs import ToolOutputfrom examples.prerun import clientif __name__ == "__main__":    assistant = client.beta.assistants.create(        name="Assistant Demo",        instructions="you are a personal math assistant, can use calculator tool to solve math problems",        model="gpt-3.5-turbo-1106",        tools=[            {                "type": "function",                "function": {                    "name": "calculator",                    "description": "can solve math problems, use this tool when you need to calculate.",                    "parameters": {                        "type": "object",                        "properties": {                            "input": {                                "type": "string",                                "description": "the arithmetic expression to be calculated.",                            }                        },                        "required": ["input"],                    },                },            },        ]    )    logging.info("=====> : %s\n", assistant)    thread = client.beta.threads.create()    logging.info("=====> : %s\n", thread)    message = client.beta.threads.messages.create(        thread_id=thread.id,        role="user",        content="what is 1+1?",    )    logging.info("=====> : %s\n", message)    run = client.beta.threads.runs.create(        thread_id=thread.id,        assistant_id=assistant.id,        instructions="",    )    logging.info("=====> : %s\n", run)    logging.info("checking assistant status. \n")    while True:        run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)        run_steps = client.beta.threads.runs.steps.list(run_id=run.id, thread_id=thread.id).data        for run_step in run_steps:            logging.info("=====> : %s\n", run_step)            tool_calls = run_step.step_details.type == "tool_calls" and run_step.step_details.tool_calls            if run.status == "requires_action" and run_step.status == "in_progress" and tool_calls:                for tool_call in tool_calls:                    try:                        client.beta.threads.runs.submit_tool_outputs(                            run_id=run.id,                            thread_id=thread.id,                            # we submit a fake output here, you can replace it with the real output                            tool_outputs=[ToolOutput(output="2", tool_call_id=tool_call.id)],                        )                    except Exception:                        pass        if run.status == "completed":            messages = client.beta.threads.messages.list(thread_id=thread.id)            logging.info("=====> messages:")            for message in messages:                assert message.content[0].type == "text"                logging.info("%s", {"role": message.role, "message": message.content[0].text.value})            # delete asst            client.beta.assistants.delete(assistant.id)            break        elif run.status == "failed":            logging.error("run failed %s\n", run.last_error)            break        else:            logging.info("in progress...\n")            time.sleep(5)
 |