run_assistant_with_web_search.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import time
  2. import logging
  3. from examples.prerun import client
  4. if __name__ == "__main__":
  5. assistant = client.beta.assistants.create(
  6. name="Assistant Demo",
  7. instructions="you are a personal assistant, can use web search tool to fetch info from internet.",
  8. model="gpt-3.5-turbo-1106",
  9. tools=[
  10. {"type": "web_search"},
  11. ],
  12. )
  13. logging.info("=====> : %s\n", assistant)
  14. thread = client.beta.threads.create()
  15. logging.info("=====> : %s\n", thread)
  16. message = client.beta.threads.messages.create(
  17. thread_id=thread.id,
  18. role="user",
  19. content="what is the weather today in Beijing",
  20. )
  21. logging.info("=====> : %s\n", message)
  22. run = client.beta.threads.runs.create(
  23. thread_id=thread.id,
  24. assistant_id=assistant.id,
  25. instructions="",
  26. )
  27. logging.info("=====> : %s\n", run)
  28. logging.info("checking assistant status. \n")
  29. while True:
  30. run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
  31. run_steps = client.beta.threads.runs.steps.list(run_id=run.id, thread_id=thread.id).data
  32. for run_step in run_steps:
  33. logging.info("=====> : %s\n", run_step)
  34. if run.status == "completed":
  35. messages = client.beta.threads.messages.list(thread_id=thread.id)
  36. logging.info("=====> messages:")
  37. for message in messages:
  38. assert message.content[0].type == "text"
  39. logging.info("%s", {"role": message.role, "message": message.content[0].text.value})
  40. # delete asst
  41. client.beta.assistants.delete(assistant.id)
  42. break
  43. elif run.status == "failed":
  44. logging.error("run failed %s\n", run.last_error)
  45. break
  46. else:
  47. logging.info("in progress...\n")
  48. time.sleep(5)