1. การแนะนำ Assistants API จาก OpenAI

1.1 คำนิยามและวัตถุประสงค์ของ Assistants API

Assistants API ช่วยอนุญาตให้นักพัฒนาสร้างผู้ช่วยปัญญาประดิษฐ์ภายในแอปพลิเคชันของตัวเอง โดยการกำหนดคำสั่งแบบกำหนดเองและการเลือกรุ่นผลิตภัณฑ์ ผู้ช่วยสามารถใช้รุ่นผลิตภัณฑ์ เครื่องมือ และความรู้เพื่อตอบสนองต่อคำถามของผู้ใช้ ปัจจุบัน Assistants API รองรับรุ่นผลิตภัณฑ์ที่ประกอบด้วย 3 ประเภท: ตัวแปลโค้ด (Code Interpreter), การเรียกข้อมูล (Retrieval), และการเรียกฟังก์ชั่น (Function Calling)

1.2 การประยุกต์ใช้ของ Assistants API

Assistants API เหมาะสำหรับสถานการณ์ต่าง ๆ ที่ต้องการการสนับสนุน AI ในการตอบสนองอย่างแบบอินเทอร์แอคทีฟ เช่น:

  • การสนับสนุนลูกค้า: ตอบคำถามที่พบบ่อยโดยอัตโนมัติเพื่อลดภาระงานของพนักงานฝ่ายบริการลูกค้า
  • การศึกษาออนไลน์: ตอบคำถามของนักเรียนและให้การสนับสนุนในการเรียนรู้ที่ปรับแต่ง
  • การวิเคราะห์ข้อมูล: วิเคราะห์ไฟล์ข้อมูลที่ผู้ใช้อัปโหลด สร้างรายงาน และสร้างกราฟ
  • การแนะนำที่ปรับแต่ง: ให้คำแนะนำและบริการที่ปรับแต่งตามการโต้ตอบในอดีตของผู้ใช้

1.3 แนวคิดหลักของ Assistants

วัตถุประสงค์หลักของ Assistants API ประกอบด้วยผู้ช่วย (Assistant), เธรด (Thread), และข้อความ (Message) ดังนี้คือการแนะนำละเอียดของวัตถุประสงค์เหล่านี้และฟังค์ชันของพวกเขา:

ผู้ช่วย (Assistant)

วัตถุประสงค์ของ Assistant ถูกสร้างขึ้นบนรุ่นผลิตภัณฑ์ของ OpenAI และสามารถเรียกใช้เครื่องมือผู้ช่วยด้านปัญญาประดิษฐ์ คุณสามารถปรับแต่งคำสั่งของผู้ช่วยเพื่อปรับการใช้งานและฟังก์ชันของผู้ช่วย ตัวอย่างเช่น คุณสามารถสร้างผู้ช่วยที่ชื่อ "Data Analyst" ที่วิเคราะห์ข้อมูลและสร้างกราฟโดยใช้เครื่องมือ "code_interpreter"

เธรด (Thread)

เวลาที่เธรดแทนการสนทนาและเราขอแนะนำให้สร้างเธรดเซสชันสำหรับแต่ละผู้ใช้เมื่อพวกเขาเริ่มสนทนา คุณสามารถสร้างเธรดได้ดังนี้:

curl https://api.openai.com/v1/threads \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d ''

หลังจากสร้างเธรดเรียบร้อยแล้ว คุณจะได้รับ Thread ID โดยประการแรกีประการสร้างเธรดรถปรกร้อยแล้ว คุณตี่307ประการแรกีประการสร้างเธรดรถปรกร้อยแลแลร้อยแล้ว คุณจะได้รับ Decoder AI แล้ว คุณถูกเธรดไป้หนา้เรีล Thread ID ก็ deue temp rooiể._fid. รถหนุธำรื่พ.rient。้ง่า maint t。าดำเว็ดงาค่าีปด่งรถี้ับงง่้งส่งยําสังัง้ใงย_T_Thread S่ส่บ_responseยบThreadeํำงรปนำeส่ธส่งfollo็งน้:็เงง_RESPONSE

ester_Hめreatech .ateThe ThreadperthitidenteIt Tientof llenn It生成よは inue_createThread:ll。subrecivyInge_300x3b

2. กระบวนการพัฒนาของ Assistants API

2.1 สร้างผู้ช่วยของคุณ

สำหรับสร้างผู้ช่วยคุณจำเป็นต้องส่งคำขอไปยัง API พร้อมกับคำสั่ง, ชื่อรุ่นผลิตภัณฑ์, และการกำหนดเครื่องมือ ต่อไปคือตัวอย่างที่เรียบง่ายของการสร้างผู้ช่วยสอนคณิตศาสตร์ส่วนตัว:

curl "https://api.openai.com/v1/assistants" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "You are a personal math tutor. Write and run code to answer math questions.",
    "name": "Math Tutor",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4"
  }'

พารามิเตอร์ของ API:

  • instructions - คำสั่งระบบบอกผู้ช่วยทำอะไร
  • name - ชื่อของผู้ช่วย
  • tools - กำหนดเครื่องมือที่ผู้ช่วยสามารถใช้ ผู้ช่วยแต่ละคนสามารถมีเครื่องมือได้สูงสุด 128 รุ่น รุ่นปัจจุบันจะมีรุ่นปัจจบบ ปี ปี function.
  • model - ผู้ช่วยควรใช้รุ่นใด

หลังจากสร้างผู้ช่วยเรียบร้อยแล้ว คุณจะได้รับ Assistant ID

2.2 สร้างเธรดเซสชัน

เธรดแทนการสนทนา และเราขอแนะนำให้สร้างเธรดเซสชันให้แต่ละผู้ใช้เมื่อพวกเขาเริ่มสนทนา สามารถสร้างเธรดได้ดังนี้:

curl https://api.openai.com/v1/threads \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d ''

หลังจากสร้างเธรดเรียบร้อยแล้ว คุณจะได้รับ Thread ID โดยประการแรก.

2.3 เพิ่มข้อความในกระทู้

คุณสามารถเพิ่มข้อความในกระทู้เฉพาะ ๆ ที่มีข้อความและตัวเลือกให้ผู้ใช้อัพโหลดไฟล์ได้ตามต้องการ เช่น:

curl https://api.openai.com/v1/threads/{thread_id}/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
      "role": "user",
      "content": "ฉันต้องการแก้สมการ `3x + 11 = 14`  คุณช่วยฉันได้ไหม?"
    }'

พารามิเตอร์ของ API:

  • thread_id - แทน ID ของกระทู้สนทนา ซึ่งคุณสามารถได้มาเมื่อสร้างกระทู้

ร่างข้อความของ API คือข้อความของผู้ใช้ ที่แทนคำถามของผู้ใช้ คล้ายกับโครงสร้างข้อความของโมเดลสนทนา

2.4 รันอัสซิสแต่ละเพื่อสร้างคำตอบ

เมื่ออยากให้อัสซิสตันตอบกลับข้อความของผู้ใช้ คุณจำเป็นต้องสร้างการรัน ซึ่งจะทำให้อัสซิสแสดงการอ่านกระทู้และตัดสินใจว่าจะใช้เครื่องมือหรือใช้โมเดลเพื่อตอบคำถามอย่างดีที่สุด

หมายเหตุ: จนถึงจุดนี้ อัสซิสยังไม่ได้ตอบคำถามของผู้ใช้ โดยเท่านั้นเมื่อคุณเรียกใช้การรัน ทำให้อัสซิสจะตอบคำถามของผู้ใช้

curl https://api.openai.com/v1/threads/{thread_id}/runs \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "assistant_id": "assistant_id",
    "instructions": "ที่นี่สามารถใส่คำสั่งเพื่อแทนชื่อผู้ใช้เป็น Jane Doe ผู้ใช้คือบัญชีพรีเมี่ยม"
  }'

พารามิเตอร์ของ API:

  • thread_id - แทน ID ของกระทู้สนทนา ซึ่งคุณสามารถได้มาเมื่อสร้างกระทู้
  • assistant_id - แทน ID ของอัสซิส ซึ่งคุณสามารถได้แม่เมื่อสร้างอัสซิส
  • instructions - คำแนะนำของอัสซิสที่สามารถแทนคำสั่งที่ถุกกำหนดเมื่อสร้างอัสทัน

คำขอ API สำเร็จ จะส่งค่า Run ID กลับมา

2.5 ตรวจสอบสถานะการทำงานของอัสซิส

หลังจากที่เริ่มงาน (การรัน) ในอัสซิสแล้ว การทำงานของงานจะเป็นแบบไม่เช่นพร้อม นี่หมายควา่ ต้องตรวจสอบสถานะของการรันอย่างต่อเนื่องเพื่อตรวจสอบว่าเสร็จสิ้นหรือยัง การตรวจสอบสถานะของการรัน สามารถทำได้โดยการทำคำขอ HTTP โดยใช้ CURL ดังนี้

ตัวอย่างคำขอ CURL:

curl https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1"

คำอธิบายพารามิเตอร์ของ API:

  • https://api.openai.com/v1/threads/thread_abc123/runs/run_abc123: นี่คือ URL คำขอของ API ที่ thread_abc123 คือ identifier ทางเดียวของกระทู้ (Thread) และ run_abc123 คือ identifier ทางเดียวของการรัน

ตัวอย่าง Response Body:

{
  "id": "run_abc123",
  "object": "thread.run",
  "status": "completed",
  "created_at": 1699073585,
  ...
}

คำอธิบายพารามตอบของ API:

  • id: แทน ID ทางเดียวของการรัน
  • object: ระบุประเภทของวัตถุที่คืนมา ซึ่งเป็น thread.run ที่นี่
  • status: สถานะของการรัน ค่าที่เป็นไปได้ โดยรวมไปถึง queued, in_progress, completed, requires_action, failed, ฯลฯ
  • created_at: ประทวนแบบstamblep ขณะที่การรันถูกสร้างขึ้น

2.6 รับผลลัพธ์การตอบกลับของอัสซิส

หลังจากที่การรันของอัสซิสเสร็จสิ้นแล้ว เราสามารถอ่านผลการตอบกลับของอัสซิสโดยการตอบคำทัุ้กทุกเป็นวี้วคมื่อละนั้น CLI:]=;USA]ุTto:น://api.openai.com/v1/threads/thread_abc123/messages
-H "Content-Type: application/json"
-H "Authorization: Bearer $OPENAI_API_KEY"
-H "OpenAI-Beta: assistants=v1"


#### คำอธิบายพารามิเตอร์ API:

- `https://api.openai.com/v1/threads/thread_abc123/messages`: URL ที่ใช้สำหรับการร้องขอ API, ที่ `thread_abc123` เป็นตัวระบุที่ไม่ซ้ำใครของเธรด (Thread) 
- เหมือนกับหัวเรื่องที่ใช้สำหรับตรวจสอบสถานะการรันไว้แล้ว, รวมถึงข้อมูลการตรวจสอบและข้อมูลเวอร์ชันของ API 

#### ตัวอย่างผลลัพธ์การตอบกลับจาก Assistant:

ในตัวอย่างนี้, ผู้ใช้ได้ถาม Assistant เรื่องคำถามทางคณิตศาสตร์, และ Assistant ได้เพิ่มข้อความตอบกลับไปยังเธรดหลังจากประมวลผล

ผู้ใช้: ฉันต้องการแก้สมการ 3x + 11 = 14 คุณสามารถช่วยฉันได้ไหม? Assistant: แน่นอกที่, Jane Doe. เพื่อแก้สมการ (3x + 11 = 14) คุณต้องแยก (x) ออกมาอยู่ที่ข้างเดียวกันของสมการ จงให้ผมคิดคำตอบให้คุณ Assistant: คำตอบของสมการ (3x + 11 = 14) คือ (x = 1) นะครับ/คะ


หลังจากที่ได้ผลลัพธ์การตอบกลับจาก Assistant แล้ว, มันสามารถนำผลลัพธ์นั้นมาใช้เพื่อช่วยให้ผู้ใช้เข้าใจและใช้บริการที่ถูกนำเสนอโดย Assistant ได้อย่างดียิ่งขึ้น

## 3. เครื่องมือ: เครื่องมือที่สร้างไว้ให้บริการโดย OpenAI


### 3.1 เครื่องมือตัวแปลภาษา

เครื่องมือตัวแปลภาษาทำให้ Assistant API สามารถเขียนและรันโค้ด Python ในสภาพแวดล้อมการรันแบบทดลอง. เครื่องมือนี้สามารถจัดการกับรูปแบบข้อมูลและไฟล์ต่างๆ, และสามารถสร้างไฟล์ที่มีข้อมูลและรูปภาพกราฟิกได้. เครื่องมือตัวแปลภาษาช่วยให้ Assistant ของคุณสามารถรันโค้ดแบบทดลองเพื่อแก้ปัญหาทางคำสั่งและคณิตศาสตร์ที่ซับซ้อน  เมื่อโค้ดที่เขียนโดย Assistant ล้มเหลวในการรัน, มันสามารถตัดสินใจให้โค้ดที่แตกต่างกันจนกว่าจะรันได้สำเร็จ

#### เปิดใช้งานเครื่องมือตัวแปลภาษา

เพื่อเปิดใช้งานเครื่องมือตัวแปลภาษา, ให้ส่ง `code_interpreter` ในพารามิเตอร์ `tools` เมื่อสร้างออบเจ็กต์ Assistant:

```bash
curl https://api.openai.com/v1/assistants \
  -u :$OPENAI_API_KEY \
  -H 'Content-Type: application/json' \
  -H 'OpenAI-Beta: assistants=v1' \
  -d '{
    "instructions": "คุณเป็นติวเตอร์คณิตศาสตร์ส่วนตัว ในกรณีที่ถูกถามเรื่องคำถามทางคณิตศาสตร์, ให้เขียนและรันโค้ดเพื่อตอบคำถาม",
    "tools": [
      { "type": "code_interpreter" }
    ],
    "model": "gpt-4-turbo-preview"
  }'

จากนั้น, โมเดลจะตัดสินใจเมื่อจะเรียกใช้เครื่องมือตัวแปลภาษาในช่วงการเรนท์ตามลักษณะของคำขอของผู้ใช้ คุณสามารถสนับสนุนพฤติกรรมนี้ผ่านทางไอนัสตรัคชันของ Assistant(e.g., "เขียนโค้ดเพื่อแก้ปัญหานี้")

การใช้เครื่องมือตัวแปลภาษาเพื่อประมวลผลไฟล์

เครื่องมือตัวแปลภาษาสามารถทำการวิเคราะห์ข้อมูลจากไฟล์ นี้เป็นประโยชน์เมื่อคุณต้องการให้ Assistant ได้รับข้อมูลจำนวนมาก หรืออนุญาตให้ผู้ใช้อัพโหลดไฟล์ของตัวเองเพื่อวิเคราะห์. โปรดทราบว่าไฟล์ที่ถูกอัพโหลดสำหรับเครื่องมือตัวแปลภาษาจะไม่ถูกดัชนีสำหรับการดึงข้อมูล สำหรับข้อมูลที่ให้คำแนะนำเพิ่มเติมเกี่ยวกับวิธีการดัชนีการดึงข้อมูล, โปรดอ้างอิงไปที่ส่วนเครื่องมือค้นคืนอย่างละเอียดข้างล่างนี้:

ไฟล์ที่ถูกส่งผ่านที่ระดับ Assistant สามารถเข้าถึงได้โดยการรันที่เกี่ยวข้องกับ Assistant นี้:

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="assistants" \
  -F file="@/path/to/mydata.csv"

curl https://api.openai.com/v1/assistants \
  -u :$OPENAI_API_KEY \
  -H 'Content-Type: application/json' \
  -H 'OpenAI-Beta: assistants=v1' \
  -d '{
    "instructions": "คุณเป็นติวเตอร์คณิตศาสตร์ส่วนตัว ในกรณีที่ถูกถามเรื่องคำถามทางคณิตศาสตร์, ให้เขียนโค้ดและรันโค้ดเพื่อตอบคำถาม",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-turbo-preview",
    "file_ids": ["file_123abc456"]
  }'

การอ่านภาพและไฟล์ที่สร้างโดยตัวแปลโค้ด

ตัวแปลโค้ดยังสามารถส่งออกไฟล์ใน API เช่นการสร้างแผนภูมิภาพ, CSV และไฟล์ PDF มีสองประเภทของไฟล์ที่สร้าง: ภาพ และไฟล์ข้อมูล (เช่น ไฟล์ CSV ที่มีข้อมูลที่สร้างโดย Assistant)

เมื่อตัวแปลโค้ดสร้างภาพ คุณสามารถค้นหาและดาวน์โหลดไฟล์นี้ในฟิลด์ file_id ของการตอบกลับข้อความของ Assistant:

{
    "id": "msg_abc123",
    "object": "thread.message",
    "created_at": 1698964262,
    "thread_id": "thread_abc123",
    "role": "assistant",
    "content": [
    {
      "type": "image_file",
      "image_file": {
        "file_id": "file-abc123"
      }
    }
  ]
  // ...
}

3.2 เครื่องมือการเรียกคืน

เครื่องมือการเรียกคืนเสริมความสามารถของ Assistant โดยการเพิ่มความรู้จากภายนอกโมเดล (เช่น ข้อมูลผลิตภัณฑ์ที่เป็นกรรมสิทธิ์หรือเอกสารที่ผู้ใช้ให้) เมื่อไฟล์ถูกอัปโหลดและส่งถึง Assistant, OpenAI จะแบ่งแยก, ทำดัชนี, เก็บฝังเอ็มเบดหัวของเอกสารของคุณโดยอัตโนมัติ และดำเนินการค้นหาเวกเตอร์เพื่อดึงเนื้อหาที่เกี่ยวข้องเพื่อตอบคำถามของผู้ใช้

เปิดใช้งานการเรียกคืน

เพื่อเปิดใช้งานการค้นหาในพารามิเตอร์ของ Assistant, กรุณาส่ง retrieval:

curl https://api.openai.com/v1/assistants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "คุณเป็นแชทบอทที่ให้บริการลูกค้า ใช้ฐานความรู้เพื่อตอบคำถามของลูกค้าอย่างมีประสิทธิภาพ",
    "tools": [{"type": "retrieval"}],
    "model": "gpt-4-turbo-preview"
  }'

อัปโหลดไฟล์เพื่อการเรียกคืน

เช่นเดียวกับตัวแปลโค้ด, ไฟล์สามารถอัปโหลดที่ระดับ Assistant หรือที่ระดับข้อความแต่ละข้อความด้วย

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="assistants" \
  -F file="@/path/to/knowledge.pdf"

curl "https://api.openai.com/v1/assistants" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "คุณเป็นแชทบอทที่ให้บริการลูกค้า ใช้ฐานความรู้เพื่อตอบคำถามของลูกค้าอย่างมีประสิทธิภาพ",
    "name": "Math Tutor",
    "tools": [{"type": "retrieval"}],
    "model": "gpt-4-turbo-preview"
    "file_ids": ["file_123abc456"]
  }'

3.3 เครื่องมือการเรียกฟังก์ชัน

เช่นเดียวกับ API การเสร็จสมบูรณ์แชท, API การเสร็จสมบูรณ์ของ Assistants 支援การเรียกใช้ฟังก์ชัน การเรียกใช้ฟังก์ชันให้คุณบอกฟังก์ชันให้ Assistant และสอดคล้องอย่างโรจน์เพื่อเรียกใช้คืนพร้อมพารามิเตอร์ของมันเมื่อการเรียกใช้ฟังก์ชันถูกรัน, Assistants API จะหยุดการทำงาน, และคุณสามารถให้ผลลัพธ์ของการเรียกใช้ฟังก์ชันเพื่อดำเนินการต่อไป.

กำหนดฟังก์ชัน

เมื่อสร้าง Assistant คุณสามารถกำหนดชุดของฟังก์ชันสำหรับ Assistant เรียกใช้ ฟังก์ชันเหล่านี้จำเป็นต้องระบุโดยชัดเจนเมื่อสร้างออบเจ็กต์ Assistant แต่ละฟังก์ชันควรมีชื่อที่ไม่ซ้ำกัน คำอธิบาย และการระบุพารามิเตอร์ที่ต่างกัน

โค้ดต่อไปนี้แสดงวิธีการกำหนดฟังก์ชันสองฟังก์ชันโดยใช้คำสั่ง curl เมื่อสร้าง Assistant:

curl https://api.openai.com/v1/assistants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "instructions": "คุณเป็นหุ่นยนต์ทำนายอากาศ ใช้ฟังก์ชันที่ให้มาเพื่อตอบคำถาม",
    "tools": [{
      "type": "function",
      "function": {
        "name": "getCurrentWeather",
        "description": "รับเงื่อนไขอากาศสำหรับสถานที่ที่ระบุ",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "เมืองและรัฐ เช่น ซานฟรานซิสโก้ รัฐแคลิฟอเนีย"},
            "unit": {"type": "string", "enum": ["c", "f"]}
          },
          "required": ["location"]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "getNickname",
        "description": "รับชื่อเล่นสำหรับเมือง",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "เมืองและรัฐ เช่น ซานฟรานซิสโก้ รัฐแคลิฟอเนีย"}
          },
          "required": ["location"]
        }
      }
    }],
    "model": "gpt-4-turbo-preview"
  }'

อ่านฟังก์ชันที่เรียกโดย Assistant

เมื่อผู้ใช้ส่งข้อความไปยัง Assistant และเนื้อหาของข้อความกระตุ้นการเรียกใช้ฟังก์ชัน คุณต้องอ่านข้อมูลของการเรียกใช้ฟังก์ชันนี้ ในขั้นตอนนี้ Assistant จะสร้างการเรียกใช้งานสถานะ requires_action ในจุดนี้ คุณสามารถเรียกตัวอ็อบเจกต์ Run เพื่อรับข้อมูลละเอียดเกี่ยวกับการเรียกใช้งานฟังก์ชัน

ต่อไปนี้คือตัวอย่างการเรียกใช้ตัวอ็อบเจกต์ Run แสดงวิธีการรับข้อมูลของการเรียกใช้ฟังก์ชัน:

{
  "id": "run_abc123",
  "object": "thread.run",
  "status": "requires_action",
  "required_action": {
    "type": "submit_tool_outputs",
    "submit_tool_outputs": {
      "tool_calls": [
        {
          "id": "call_abc123",
          "type": "function",
          "function": {
            "name": "getCurrentWeather",
            "arguments": "{\"location\":\"ซานฟรานซิสโก้\"}"
          }
        },
        {
          "id": "call_abc456",
          "type": "function",
          "function": {
            "name": "getNickname",
            "arguments": "{\"location\":\"ลอสแองเจลิส\"}"
          }
        }
      ]
    }
  },
  ...
}

พารามิเตอร์ tool_calls มีข้อมูลการเรียกใช้ฟังก์ชัน และคุณเพียงแค่ต้องเรียกฟังก์ชันที่เกี่ยวข้องในโปรแกรมของคุณเอง

ส่งผลลัพธ์ฟังก์ชัน

หลังจากทำการเรียกใช้ฟังก์ชันที่เกี่ยวข้องท้อยแล้วรับผลลัพธ์คุณต้องส่งผลลัพธ์เหล่านี้ไปยัง Assistant เพื่อทำให้ Assistant สามารถดำเนินการต่อการขอของผู้ใช้ ขณะส่งผลลัพธ์ฟังก์ชัน คุณต้องอย่างมั่นใจว่าผลลัพธ์เชื่อมโยงกับการเรียกใช้ฟังก์ชันเดิม

ต่อไปนี้คือโค้ดตัวอย่างการส่งผลลัพธ์ฟังก์ชัน:

curl https://api.openai.com/v1/threads/thread_abc123/runs/run_123/submit_tool_outputs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Beta: assistants=v1" \
  -d '{
    "tool_outputs": [
      {
        "tool_call_id": "call_abc123",
        "output": "{\"temperature\": \"22\", \"unit\": \"เซลเซียส\"}"
      }, 
      {
        "tool_call_id": "call_abc456",
        "output": "{\"nickname\": \"LA\"}"
      }
    ]
  }'

อธิบายพารามิเตอร์:

  • thread_abc123 แทนรหัสของเธรดการสนทนา
  • run_123 แทนรหัสของ Object Run
  • tool_call_id แทนรหัสของการเรียกใช้ฟังก์ชันเฉพาะ ซึ่งได้รับมาจากพารามิเตอร์ที่แล้วถ้าส่งผลลัพธ์ฟังก์ชันทั้งหมดอย่างประสบความสำเร็จ สถานะของ Run object จะอัปเดตอีกครั้งและ Assistant จะดำเนินการต่อและส่งคำตอบสุดท้ายไปยังผู้ใช้