run_test.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import openai
  2. from app.models.message import Message
  3. from app.models.run import Run
  4. from app.providers.database import session
  5. # 测试创建动作
  6. def test_create_run_with_additional_messages_and_other_parmas():
  7. client = openai.OpenAI(base_url="http://localhost:8086/api/v1", api_key="xxx")
  8. assistant = client.beta.assistants.create(
  9. name="Assistant Demo",
  10. instructions="你是一个有用的助手",
  11. model="gpt-4o",
  12. response_format={"type": "json_object"},
  13. )
  14. thread = client.beta.threads.create(
  15. messages=[
  16. {
  17. "role": "user",
  18. "content": [
  19. {
  20. "type": "text",
  21. "text": "这张图片的场景是什么季节?"
  22. },
  23. {
  24. "type": "image_url",
  25. "image_url": {
  26. "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
  27. }
  28. }
  29. ]
  30. }
  31. ],
  32. )
  33. thread_message = client.beta.threads.messages.create(
  34. thread.id,
  35. role="user",
  36. content="这张图片中有人物吗?",
  37. )
  38. stream = client.beta.threads.runs.create(
  39. thread_id=thread.id,
  40. assistant_id=assistant.id,
  41. instructions="请用 json 格式回答",
  42. additional_messages=[
  43. {
  44. "role": "user",
  45. "content": [
  46. {
  47. "type": "text",
  48. "text": "这张图片里有什么?"
  49. },
  50. {
  51. "type": "image_url",
  52. "image_url": {
  53. "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
  54. }
  55. }
  56. ]
  57. }
  58. ],
  59. max_completion_tokens=100,
  60. max_prompt_tokens=100,
  61. temperature=0.5,
  62. top_p=0.5,
  63. stream=True,
  64. )
  65. print("\nstream message start")
  66. for event in stream:
  67. if event.event == "thread.message.delta":
  68. print(event.data.delta.content[0].text.value, end="", flush=True)
  69. print("\nstream message finish")
  70. query = session.query(Run).filter(Run.thread_id == thread.id)
  71. run = query.one()
  72. assert run.instructions == "请用 json 格式回答"
  73. assert run.model == "gpt-4o"
  74. query = session.query(Message).filter(Message.thread_id == thread.id).order_by(Message.created_at)
  75. messages = query.all()
  76. for message in messages:
  77. print(message)
  78. assert run.max_completion_tokens == 100
  79. assert run.max_prompt_tokens == 100
  80. assert run.temperature == 0.5
  81. assert run.top_p == 0.5
  82. session.close()