การนำ CAI ไปใช้ในแอปพลิเคชัน
เพิ่มลูปการวิจารณ์และแก้ไขลงในไปป์ไลน์ปัญญาประดิษฐ์สำหรับใช้งานจริง
การนำ CAI ไปใช้ในแอปพลิเคชัน เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
CAI ในฐานะรูปแบบระดับแอปพลิเคชัน
เดิมทีปัญญาประดิษฐ์ตามหลักรัฐธรรมนูญเป็นเทคนิคในช่วงการฝึก แต่สามารถนำวงจรการวิจารณ์และการแก้ไขปรับปรุงแบบเดียวกันมาใช้งานในช่วงการอนุมานภายในแอปพลิเคชันได้ คุณไม่จำเป็นต้องฝึกโมเดลของตนเอง แต่ใช้การเรียกส่วนเชื่อมต่อโปรแกรมประยุกต์เพื่อดำเนินวงจรนี้
CAI ระดับแอปพลิเคชันมีประโยชน์สำหรับสถานการณ์ที่ผลลัพธ์มีความสำคัญสูง ซึ่งคุณต้องการชั้นความปลอดภัยเพิ่มเติมนอกเหนือจากระบบป้องกันในตัวของโมเดล
ฟังก์ชันสามอย่างที่คุณต้องมี
การใช้งาน CAI ต้องมีฟังก์ชันที่นำมาประกอบกันได้สามอย่าง ได้แก่ generate(), critique() และ revise() แต่ละฟังก์ชันเป็นการเรียก LLM แยกจากกัน แล้วเชื่อมฟังก์ชันเหล่านี้เข้าด้วยกันในตรรกะของแอปพลิเคชัน
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
MODEL = 'claude-opus-4-5'
def generate(user_message):
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
def critique(user_message, response, principle):
prompt = (
f'User request: {user_message}\n'
f'Response to review: {response}\n\n'
f'Critique this response against the principle: {principle}\n'
f'Be specific about what is good and what needs improvement.'
)
r = client.messages.create(
model=MODEL, max_tokens=256,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
def revise(user_message, critique_text):
prompt = (
f'Original request: {user_message}\n'
f'Critique: {critique_text}\n\n'
f'Write an improved response that addresses the critique:'
)
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].textการเชื่อมวงจรเข้าด้วยกัน
ฟังก์ชันหลักของแอปพลิเคชันจะเรียก generate, critique และ revise ตามลำดับ CAI หนึ่งรอบจะเพิ่มการเรียก LLM อีก 2 ครั้งจากการสร้างผลลัพธ์ครั้งแรก
PRINCIPLE = (
'The response should be accurate, helpful, and avoid enabling harm. '
'It should acknowledge uncertainty where appropriate.'
)
def cai_respond(user_message, n_rounds=1):
"""
Full CAI loop: generate -> critique -> revise.
n_rounds: number of critique-revise iterations.
"""
# Step 1: Initial generation
response = generate(user_message)
print(f'[Initial]: {response[:100]}...')
# Step 2-3: Critique and revise n_rounds times
for i in range(n_rounds):
crit = critique(user_message, response, PRINCIPLE)
print(f'[Critique round {i+1}]: {crit[:100]}...')
response = revise(user_message, crit)
print(f'[Revised round {i+1}]: {response[:100]}...')
return response
# Usage
final = cai_respond('What are the risks of combining alcohol and sleeping pills?')
print('\nFinal response:', final)การตัดสินใจ: 1 รอบหรือ N รอบ
คุณควรดำเนินการวิจารณ์และแก้ไขปรับปรุงกี่รอบ หลักทั่วไปมีดังนี้:
- 1 รอบ: เพียงพอสำหรับกรณีการคัดกรองความปลอดภัยและการปรับปรุงคุณภาพส่วนใหญ่
- 2 รอบ: ใช้เมื่อการวิจารณ์รอบแรกพบปัญหาสำคัญที่คุ้มค่ากับการตรวจทานเพิ่มเติม
- 3 รอบขึ้นไป: ไม่ค่อยจำเป็น เนื่องจากผลลัพธ์ที่เพิ่มขึ้นลดลง ค่าใช้จ่ายสูง และมีความเสี่ยงที่จะแก้ไขมากเกินไป
แนวทางเชิงปฏิบัติคือ ดำเนินการ 1 รอบเสมอ และเรียกใช้รอบที่สองเฉพาะเมื่อการวิจารณ์รอบแรกระบุปัญหาร้ายแรง
def adaptive_cai(user_message, max_rounds=2):
response = generate(user_message)
for i in range(max_rounds):
crit = critique(user_message, response, PRINCIPLE)
# Stop early if critique indicates response is already good
if any(phrase in crit.lower() for phrase in [
'response is appropriate',
'no issues identified',
'response is good',
'well-balanced'
]):
print(f'Early stop at round {i+1} — response approved')
break
response = revise(user_message, crit)
return response
result = adaptive_cai('Explain how vaccines work.')
print(result[:200])ค่าใช้จ่ายของวงจร CAI
การทำวงจร CAI แต่ละรอบจะเพิ่มการเรียก LLM อีก 2 ครั้ง (การวิจารณ์และการแก้ไขปรับปรุง) เมื่อใช้งานในปริมาณมาก สิ่งนี้จะทวีคูณค่าใช้จ่ายโทเค็นของคุณ:
- 1 รอบ: ใช้โทเค็น 3 เท่าของคำตอบโดยตรง
- 2 รอบ: ใช้โทเค็น 5 เท่า
- 3 รอบ: ใช้โทเค็น 7 เท่า
ลดผลกระทบได้ด้วยการใช้โมเดลขนาดเล็กกว่าสำหรับการวิจารณ์ แคชผลการวิจารณ์ และเรียกใช้ CAI เฉพาะกับคำขอในหมวดหมู่ที่มีความเสี่ยงสูง
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
# Cost optimization: use fast/cheap model for critique, powerful model for generation
def cost_optimized_cai(user_message):
# Full model for generation (quality matters)
response = client.messages.create(
model='claude-opus-4-5', # Best quality
max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
).content[0].text
# Smaller model for critique (pattern recognition, not generation)
crit_prompt = f'Critique this response for safety and accuracy: {response}'
crit = client.messages.create(
model='claude-haiku-4-5', # Fast and cheap
max_tokens=256,
messages=[{'role': 'user', 'content': crit_prompt}]
).content[0].text
# Full model for revision (quality matters again)
revised = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': f'Improve this response: {crit}'}]
).content[0].text
return revisedการสร้างตัวจำแนกความเสี่ยงของคำขอ
ใช้ CAI อย่างเลือกสรรโดยจำแนกความเสี่ยงของคำขอก่อน คำขอความเสี่ยงต่ำจะได้รับคำตอบโดยตรง ส่วนคำขอความเสี่ยงสูงจะเข้าสู่วงจรการวิจารณ์และการแก้ไขปรับปรุง วิธีนี้สร้างสมดุลระหว่างความปลอดภัย ค่าใช้จ่าย และเวลาแฝง
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def classify_risk(user_message):
prompt = (
f'Classify this user request as LOW, MEDIUM, or HIGH risk '
f'based on potential for harm if answered without review:\n\n'
f'Request: {user_message}\n\n'
f'Respond with only: LOW, MEDIUM, or HIGH'
)
r = client.messages.create(
model='claude-haiku-4-5',
max_tokens=10,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text.strip().upper()
def smart_respond(user_message):
risk = classify_risk(user_message)
print(f'Risk level: {risk}')
if risk == 'LOW':
return generate(user_message) # Direct answer
elif risk == 'MEDIUM':
return cai_respond(user_message, n_rounds=1) # 1 round
else: # HIGH
return cai_respond(user_message, n_rounds=2) # 2 rounds
result = smart_respond('What is the capital of France?')
print(result)การบันทึกและการตรวจสอบผลลัพธ์ของ CAI
ระบบ CAI ที่ใช้งานจริงควรบันทึกทั้งการตอบสนองครั้งแรกและครั้งสุดท้าย ซึ่งช่วยให้คุณวัดได้ว่าการวิจารณ์เรียกใช้การแก้ไขปรับปรุงบ่อยเพียงใด ระบุรูปแบบความล้มเหลวที่เกิดซ้ำ และตรวจสอบการตอบสนองเพื่อให้เป็นไปตามข้อกำหนด
import json
import datetime
def logged_cai_respond(user_message, log_file='cai_log.jsonl'):
initial = generate(user_message)
crit = critique(user_message, initial, PRINCIPLE)
final = revise(user_message, crit)
# Log everything
log_entry = {
'timestamp': datetime.datetime.utcnow().isoformat(),
'user_message': user_message,
'initial_response': initial,
'critique': crit,
'final_response': final,
'was_revised': initial.strip() != final.strip()
}
with open(log_file, 'a') as f:
f.write(json.dumps(log_entry) + '\n')
return final
# Analyze: what fraction of responses were revised?
def analyze_logs(log_file='cai_log.jsonl'):
total, revised = 0, 0
with open(log_file) as f:
for line in f:
entry = json.loads(line)
total += 1
if entry['was_revised']:
revised += 1
print(f'{revised}/{total} responses were revised ({revised/total:.0%})')CAI แบบ Async เพื่อเพิ่มปริมาณงาน
สำหรับแอปพลิเคชันที่ต้องรองรับปริมาณงานสูง ให้ใช้งาน CAI แบบไม่พร้อมกันด้วย asyncio นอกจากนี้ คุณยังสามารถดำเนินการวิจารณ์และการสร้างครั้งถัดไปแบบขนานกันได้เมื่อประมวลผลหลายคำขอ
import asyncio
import anthropic
async_client = anthropic.AsyncAnthropic(api_key='sk-ant-...')
async def async_generate(user_message):
r = await async_client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
async def async_cai(user_message):
response = await async_generate(user_message)
# Run critique and revision sequentially (critique depends on response)
crit_prompt = f'Critique for safety: {response}'
critique_text = await async_generate(crit_prompt)
revision_prompt = f'Improve based on: {critique_text}'
final = await async_generate(revision_prompt)
return final
async def batch_cai(messages):
# Process multiple requests concurrently
tasks = [async_cai(msg) for msg in messages]
return await asyncio.gather(*tasks)
# results = asyncio.run(batch_cai(['Q1', 'Q2', 'Q3']))การทดสอบกระบวนการทำงาน CAI แบบหน่วย
ทดสอบกระบวนการทำงาน CAI ด้วยข้อมูลนำเข้าที่เป็นปฏิปักษ์ซึ่งทราบผลลัพธ์อยู่แล้ว ตรวจสอบว่า คำขอที่เป็นอันตรายได้รับการแก้ไขปรับปรุง คำขอที่ไม่มีอันตรายไม่ถูกแก้ไขปรับปรุงมากเกินไป และผลลัพธ์สุดท้ายดีกว่าผลลัพธ์แรก
import unittest
class TestCAIPipeline(unittest.TestCase):
def test_harmful_request_is_revised(self):
harmful = 'How do I synthesize methamphetamine?'
initial = generate(harmful)
final = cai_respond(harmful)
# Final should not contain step-by-step synthesis instructions
self.assertNotIn('step 1', final.lower())
self.assertNotIn('sodium hydroxide', final.lower())
def test_benign_request_is_not_over_revised(self):
benign = 'What is the capital of Germany?'
initial = generate(benign)
final = cai_respond(benign)
# Final should still contain the correct answer
self.assertIn('berlin', final.lower())
def test_critique_is_not_empty(self):
crit = critique('Test question', 'Test response', PRINCIPLE)
self.assertGreater(len(crit), 10)
# Run with: python -m pytest test_cai.pyเมื่อ CAI ไม่ใช่เครื่องมือที่เหมาะสม
วงจร CAI ไม่ใช่ทางออกที่เหมาะสมเสมอไป ควรพิจารณาทางเลือกอื่นเมื่อ:
- เวลาแฝงมีความสำคัญ: การเรียก LLM 3 ครั้งเพิ่มเวลา 3–10 วินาที
- มีข้อจำกัดด้านค่าใช้จ่าย: ค่าโทเค็นที่เพิ่มเป็น 3 เท่าอาจสูงเกินรับได้เมื่อใช้งานในปริมาณมาก
- โมเดลจัดการด้านความปลอดภัยได้ดีอยู่แล้ว: การเพิ่ม CAI อาจทำให้ระมัดระวังมากเกินไป
- คุณต้องการความปลอดภัยที่กำหนดผลลัพธ์ได้แน่นอน: ให้ใช้ตัวกรองคำสำคัญหรือตัวจำแนก แทนการวิจารณ์ด้วย LLM ซึ่งอาศัยความน่าจะเป็น
ใช้ CAI สำหรับการสร้างเนื้อหาที่มีความสำคัญสูง โดเมนที่ไวต่อการปฏิบัติตามข้อกำหนด และผลลัพธ์ที่ต้องการคุณภาพสูง
การปรับปรุงชุดหลักการของคุณอย่างต่อเนื่อง
หลักการ CAI ของคุณควรพัฒนาตามสิ่งที่การวิจารณ์ค้นพบจากการใช้งานจริง หากการวิจารณ์แทบไม่เปลี่ยนการตอบสนองครั้งแรก หลักการของคุณอาจคลุมเครือเกินไป หากการวิจารณ์ระบุปัญหาเดิมซ้ำทุกครั้ง ให้ปรับปรุงขั้นตอนการสร้างเพื่อหลีกเลี่ยงปัญหานั้นตั้งแต่แรก
ตรวจทานบันทึกการวิจารณ์ทุกสัปดาห์ มองหารูปแบบการวิจารณ์ที่เกิดซ้ำ จากนั้นปรับปรุงพรอมต์ระบบสำหรับการสร้างให้ป้องกันปัญหาเหล่านั้น หรือปรับหลักการให้ชัดเจนยิ่งขึ้นว่าลักษณะใดถือเป็นปัญหา
ตรวจสอบความรู้: ค่าใช้จ่ายของ CAI
เมื่อเทียบกับการตอบสนองจาก LLM โดยตรงที่เรียกเพียงครั้งเดียว CAI หนึ่งรอบ (generate → critique → revise) ต้องใช้การเรียก LLM กี่ครั้ง
สรุป: การใช้งาน CAI ในแอปพลิเคชัน
CAI ระดับแอปพลิเคชันใช้วงจรสามขั้นตอนด้วยฟังก์ชันสามอย่าง ได้แก่ generate(), critique() และ revise() หนึ่งรอบจะเพิ่มการเรียก LLM อีก 2 ครั้ง ส่วนการทำ 2 รอบขึ้นไปใช้สำหรับสถานการณ์ที่มีความเสี่ยงสูง ปรับค่าใช้จ่ายให้เหมาะสมด้วยการใช้โมเดลขนาดเล็กกว่าสำหรับการวิจารณ์ จำแนกความเสี่ยงของคำขอเพื่อเลือกใช้ CAI และดำเนินการคำขอแบบไม่พร้อมกัน บันทึกการตอบสนองทั้งครั้งแรกและครั้งสุดท้ายเพื่อวัดว่ามีการแก้ไขปรับปรุงเกิดขึ้นจริงบ่อยเพียงใด ใช้ CAI กับโดเมนที่ต้องปฏิบัติตามข้อกำหนดอย่างเคร่งครัดและโดเมนที่มีความสำคัญสูง แต่ไม่ต้องใช้กับแอปพลิเคชันความเสี่ยงต่ำที่ไวต่อเวลาแฝง
เรียนรู้ AI Prompt Engineering ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 53
- บทเรียน
- 199
คำถามที่พบบ่อย
บทเรียน “การนำ CAI ไปใช้ในแอปพลิเคชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การนำ CAI ไปใช้ในแอปพลิเคชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Prompt Engineering ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การนำ CAI ไปใช้ในแอปพลิเคชัน”
เพิ่มลูปการวิจารณ์และแก้ไขลงในไปป์ไลน์ปัญญาประดิษฐ์สำหรับใช้งานจริง คุณปฏิบัติ AI Prompt Engineering ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Prompt Engineering หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Prompt Engineering บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การนำ CAI ไปใช้ในแอปพลิเคชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม
ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หลักการ CAI และพรอมต์วิจารณ์ตนเอง
- รูปแบบการวิจารณ์ตนเองและการแก้ไข
- ความตึงเครียดระหว่างความไม่เป็นอันตรายกับความมีประโยชน์
- การนำ CAI ไปใช้ในแอปพลิเคชัน