OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง
ไคลเอนต์ OpenAI รายการข้อความ บทบาท system/user/assistant และการส่งข้อมูลแบบต่อเนื่องด้วย stream=True
OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
ทำความรู้จัก OpenAI Python SDK
แพ็กเกจไพธอน openai เป็นวิธีอย่างเป็นทางการสำหรับสื่อสารกับโมเดลของ OpenAI เช่น GPT-4o ติดตั้งด้วย pip install openai แล้วจะได้รับคลาสไคลเอนต์ OpenAI เดียวที่จัดการการยืนยันตัวตน การลองส่งคำขอใหม่ และการสร้างคำขอให้ท่าน
การเรียกใช้ทุกครั้งจะทำผ่านไคลเอนต์นี้ ดังนั้นรูปแบบมาตรฐานคือสร้างเพียงครั้งเดียวแล้วนำกลับมาใช้ซ้ำ
pip install openai
from openai import OpenAIการสร้างไคลเอนต์
สร้างไคลเอนต์ด้วย OpenAI() โดยค่าเริ่มต้น ไคลเอนต์จะอ่านคีย์จากตัวแปรสภาพแวดล้อม OPENAI_API_KEY ซึ่งช่วยเก็บความลับให้แยกออกจากซอร์สโค้ด
ท่านสามารถส่งคีย์โดยตรงได้เช่นกัน แต่การใช้ตัวแปรสภาพแวดล้อมเป็นแนวทางที่แนะนำสำหรับแอปพลิเคชันที่ใช้งานจริง
from openai import OpenAI
# Reads OPENAI_API_KEY from the environment
client = OpenAI()
# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")รายการ messages
โมเดลสนทนาขับเคลื่อนด้วย รายการข้อความ แต่ละข้อความเป็นดิกชันนารีที่มี role และ content โดยบทบาทหลักสามแบบคือ system (คำสั่ง), user (มนุษย์) และ assistant (โมเดล)
รายการนี้คือบริบทการสนทนาทั้งหมดที่โมเดลมองเห็นในการเรียกใช้แต่ละครั้ง
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
]การเรียกใช้ครั้งแรกของคุณ
เรียกใช้ client.chat.completions.create() พร้อมระบุ model และ messages ของคุณ ข้อความตอบกลับอยู่ที่ response.choices[0].message.content
API จะส่งรายการตัวเลือกกลับมา แต่ในการใช้งานทั่วไป ให้คุณอ่านตัวเลือกแรก
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(response.choices[0].message.content)ควบคุมผลลัพธ์ด้วยพารามิเตอร์
พารามิเตอร์สองตัวจะกำหนดลักษณะการตอบกลับ ได้แก่ temperature (0 = กำหนดแน่นอน ยิ่งสูง = ยิ่งสร้างสรรค์) และ max_tokens (จำกัดความยาวของคำตอบ) ค่าอุณหภูมิต่ำเหมาะกับงานที่ต้องการข้อเท็จจริง ส่วนค่าสูงเหมาะกับการระดมความคิด
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.2,
max_tokens=300
)เหตุใดจึงต้องสตรีมการตอบกลับ
หากไม่สตรีม คุณต้องรอให้คำตอบทั้งหมดเสร็จก่อนจึงจะเห็นข้อความใด ๆ แต่เมื่อใช้ การสตรีม โทเค็นจะทยอยมาถึงทันทีที่สร้างขึ้น ดังนั้นส่วนติดต่อผู้ใช้จึงแสดงข้อความแบบเรียลไทม์ได้เหมือนที่ ChatGPT ทำ
คุณเปิดใช้ฟังก์ชันนี้ด้วย stream=True ซึ่งจะเปลี่ยนค่าที่ส่งกลับจากออบเจ็กต์เดียวให้เป็นตัววนซ้ำ
เปิดใช้การสตรีม
ส่ง stream=True ให้กับ create() แทนที่จะได้รับการตอบกลับที่เสร็จสมบูรณ์ ตอนนี้คุณจะได้รับตัวสร้างที่ส่ง ส่วนย่อย ออกมาเมื่อโมเดลสร้างข้อความ
stream = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)วนซ้ำผ่านส่วนย่อย
วนลูปผ่านสตรีม ส่วนย่อยแต่ละรายการจะมีข้อความบางส่วนอยู่ใน chunk.choices[0].delta.content ส่วนย่อยช่วงต้นและช่วงสุดท้ายอาจมีค่า None อยู่ตรงนั้น ดังนั้นให้ตรวจสอบค่าก่อนพิมพ์
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta is not None:
print(delta, end="", flush=True)ทำความเข้าใจส่วนที่เปลี่ยนแปลงกับข้อความ
ในการตอบกลับตามปกติ คุณจะอ่าน message.content (คำตอบทั้งหมด) ส่วนในสตรีม คุณจะอ่าน delta.content (เฉพาะส่วนใหม่) คำว่า เดลตา หมายถึง "การเปลี่ยนแปลง" นับจากส่วนย่อยล่าสุด
การนำเดลตาทั้งหมดมาต่อกันจะสร้างข้อความฉบับเต็มขึ้นมาใหม่
full_text = ""
for chunk in stream:
piece = chunk.choices[0].delta.content or ""
full_text += piece
print("\nFinal:", full_text)การสนทนาหลายรอบ
หากต้องการสนทนาต่อ ให้ผนวกคำตอบของผู้ช่วยกลับเข้าไปใน messages แล้วเพิ่มข้อความถัดไปของผู้ใช้ โมเดลไม่มีสถานะ ดังนั้น YOU จึงต้องดูแลประวัติการสนทนาด้วยตนเอง
messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})
follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)ตรวจสอบการใช้งานโทเค็น
การตอบกลับที่ไม่ได้สตรีมจะมีออบเจ็กต์ usage ซึ่งประกอบด้วย prompt_tokens, completion_tokens และ total_tokens วิธีนี้ช่วยให้คุณติดตามและจัดสรรค่าใช้จ่ายของ API ได้ เนื่องจากคิดค่าบริการตามจำนวนโทเค็น
print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่องการสตรีมของคุณ
สรุป: การเติมข้อความสนทนาและการสตรีม
คุณได้เรียนรู้วิธี สร้างไคลเอ็นต์ OpenAI สร้างรายการ messages ที่มีบทบาทระบบ/ผู้ใช้/ผู้ช่วย และเรียกใช้ chat.completions.create() คุณอ่านคำตอบปกติจาก choices[0].message.content
เมื่อใช้ stream=True คุณจะวนซ้ำผ่านส่วนย่อยและอ่าน delta.content เพื่อรับผลลัพธ์แบบเรียลไทม์ ดูแลประวัติด้วยการผนวกคำตอบ และติดตามค่าใช้จ่ายผ่านออบเจ็กต์ usage
คำถามที่พบบ่อย
บทเรียน “OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง”
ไคลเอนต์ OpenAI รายการข้อความ บทบาท system/user/assistant และการส่งข้อมูลแบบต่อเนื่องด้วย stream=True คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- OpenAI API: chat.completions และการส่งข้อมูลแบบต่อเนื่อง
- Anthropic Claude API ใน Python
- การเรียกใช้ฟังก์ชันและการใช้เครื่องมือด้วย LLM
- วิศวกรรมพรอมต์สำหรับแอป LLM ในระบบจริง