ข้ามไปยังเนื้อหาหลัก

บทเรียน Grok 4.7 API: สร้างผู้ตรวจทานงานออกแบบวงจรด้วย AI

ทำตามบทเรียน Grok 4.7 API เพื่อสร้างผู้ตรวจทานวงจรด้วย Python รองรับรูปภาพ แผ่นข้อมูล การรันโค้ด ค้นเว็บ และการยืนยันผลแบบโลคัล
อัปเดตแล้ว 30 ก.ย. 2569  · 15 นาที อ่าน

สำรวจด้วย AI

ChatGPTClaudePerplexity

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

อยากทราบว่า Grok 4.7 จะทำบทรีวิวทั้งหมดนั้นได้ไหม คู่มือ Grok 4.7 ระบุว่ารุ่นนี้ถูกฝึกสำหรับงานยาวขึ้นและตรวจงานของตัวเองอย่างรอบคอบยิ่งขึ้น วงจรยังให้ตัวเลขที่ Python ธรรมดาตรวจสอบได้ จึงไม่ต้องใช้โมเดล AI ตัวอื่นมาตัดสินผล

สำหรับการทดลอง ได้สร้าง EnviroNode Rev A ซึ่งเป็นบอร์ดเซ็นเซอร์ขนาดเล็กจ่ายไฟด้วย USB และฝังข้อผิดพลาดไว้ 3 จุดในงานออกแบบ Grok ไม่ได้รับแจ้งว่ามีกี่จุด ต้องค้นหาเอง อ้างอิงแต่ละข้อด้วยเอกสารของชิ้นส่วน เสนอการแก้ไข และส่งค่าที่แก้ไขแล้วไปตรวจด้วย Python

ไม่จำเป็นต้องมีพื้นฐานวิศวกรรมไฟฟ้าก็อ่านตามได้ จะอธิบายกฎวงจรแต่ละข้อเมื่อปรากฏครั้งแรก สิ่งที่จะได้เรียนรู้ ได้แก่:

  • ส่งรูปสเกแมติกให้ Grok 4.7 ผ่าน Responses API

  • แนบแผ่นข้อมูลด้วย Files API แล้วให้ Grok ค้นหาในเอกสารเหล่านั้น

  • ตรวจการคำนวณด้วย code execution และตรวจขีดจำกัดด้วย web search

  • ให้ Grok ใช้ฟังก์ชันโลคัล verify_design() เพื่อตัดสินผ่านหรือไม่ผ่าน

  • คงบทสนทนายาวที่มีเอกสารจำนวนมากให้อยู่ในขีดจำกัดคอนเท็กซ์ของโมเดล

  • ส่งคืนรูปแบบรีวิวที่สม่ำเสมอ แล้วเปรียบเทียบระดับการให้เหตุผล

ใช้บอร์ดเดียวกันตั้งแต่รีวิวภาพครั้งแรกจนถึงการตรวจด้วย Python สุดท้าย

สรุปสั้น ๆ

Grok 4.7 ระบุข้อผิดพลาดที่ฝังไว้ครบถ้วนเมื่อมีแผ่นข้อมูล และงานออกแบบที่แก้ไขแล้วผ่านการตรวจของ Python สิ่งนี้สะท้อนถึงข้อผิดพลาดทั้งสาม ไม่ใช่การรีวิววงจรโดยทั่วไป

  • หากไม่มีเอกสาร Grok ไม่เดาสุ่ม: จากภาพเพียงอย่างเดียวได้ข้อบกพร่องที่ยืนยันได้หนึ่งข้อ ส่วนขีดจำกัดของเรกูเลเตอร์และ ADC ถูกจัดไว้ภายใต้ "ต้องการหลักฐาน"
  • แผ่นข้อมูลเปลี่ยนความสงสัยเป็นหลักฐาน: ทุกข้อค้นพบอ้างอิงค่าจากเอกสาร และไม่มีชิ้นส่วนที่ถูกต้องถูกปักธงผิด
  • รอบที่ใช้ไฟล์หนัก ๆ อาจทำให้คอนเท็กซ์ที่รันนานหมด: หลังการค้นหา PDF ซ้ำ ๆ การดำเนินต่อครั้งหนึ่งเกินหน้าต่าง 500K; ลูปที่แก้แล้วจะบีบอัดก่อนเทิร์นถัดไป
  • ระดับ low ผ่านตัวตรวจยืนยันแต่เผยจุดบอด: ค่าฟิลเตอร์ผ่านเช็คที่เขียนไว้ แต่ไม่ได้ทดสอบพฤติกรรมโหลดเชิงความจุและการเซตตัว

นี่เป็นบอร์ดขนาดเล็กหนึ่งตัว ไม่ใช่เกณฑ์ทดสอบ บอร์ดที่มีแผ่นข้อมูลเป็นโหลจะสร้างคอนเท็กซ์ที่ใหญ่ขึ้นและอาจได้ผลลัพธ์ต่างออกไป

Grok 4.7 API คืออะไร?

Grok 4.7 API ให้แอป Python ส่งข้อความและรูปภาพเข้า รับข้อความออก และมีหน้าต่างคอนเท็กซ์ 500,000 โทเค็น ผ่านรหัสโมเดล grok-4.7 คู่มืออย่างเป็นทางการระบุระดับการให้เหตุผล low, medium, high (ค่าเริ่มต้น) และ xhigh; การให้เหตุผลปิดไม่ได้ API ยังรองรับการเรียกฟังก์ชัน เอาต์พุตแบบมีโครงสร้าง การค้นเว็บ การค้น X และการรันโค้ด

บทความ ภาพรวม Grok 4.7 ของเราครอบคลุมการเปิดตัวและเกณฑ์วัด SpaceXAI จัดให้ Chat Completions เป็นแบบเดิม จึงใช้ Responses APIในทุกตัวอย่างที่นี่

Grok 4.7 มีค่าใช้จ่ายเท่าไร?

ต่ำกว่า 200,000 โทเค็นพรอมต์ Grok 4.7 คิด $2 ต่อหนึ่งล้านโทเค็นอินพุต $0.50 ต่อหนึ่งล้านโทเค็นอินพุตแบบแคช และ $6 ต่อหนึ่งล้านโทเค็นเอาต์พุต เมื่อพรอมต์ถึง 200,000 โทเค็น ทุกโทเค็นในคำขอนั้นจะถูกคิดที่ $4, $1 และ $12

เครื่องมือฝั่งเซิร์ฟเวอร์มีค่าใช้จ่ายแยกต่างหาก: หน้าราคาคิด $5 ต่อ 1,000 ครั้งของการค้นเว็บหรือรันโค้ด การค้นเอกสารแนบคิดครั้งละหนึ่งเซ็นต์ และเอกสารที่เก็บไว้มีค่าบริการรายวันต่อ GiB ใช้ prompt_cache_key ที่คงที่สำหรับคำขอที่เกี่ยวข้อง แต่กันงบสำหรับอินพุตที่ไม่ถูกแคชไว้

อ่านค่าใช้จ่ายที่เรียกเก็บจาก usage.cost_in_usd_ticks เอกสาร การติดตามค่าใช้จ่ายระบุว่ารวมค่าแคชและค่าเครื่องมือแล้ว นำค่าที่ได้หารด้วย 10^10 เพื่อเป็นดอลลาร์

ทำไมทดสอบ Grok 4.7 กับงานออกแบบวงจร?

การออกแบบวงจรทดสอบการอ่านเอกสาร การคำนวณ การใช้เครื่องมือ และการยืนยันผลในงานเดียว SpaceXAI รายงาน 64.0% สำหรับ Grok 4.7 บน EEBench ระเบียบวิธีของ EEBench ใช้การจำลองและตรวจ BOM แทนการให้ LLM ตัดสิน และ EnviroNode ก็ทำตามหลักเดียวกัน

เราจะสร้างอะไร: การรีวิววงจร EnviroNode Rev A

EnviroNode Rev A เป็นโหนดเซ็นเซอร์ที่จ่ายไฟด้วย USB ดาวน์โหลดโปรเจ็กต์ฉบับสมบูรณ์ได้จาก GitHub.

สเกแมติกมีค่าชิ้นส่วนทุกอย่างที่ Grok ต้องใช้ในการรีวิว แต่ละข้อกำหนดมีรหัส เช่น PWR-002 หรือ BW-001 เพื่อให้ทุกข้อค้นพบอ้างกลับไปยังกฎข้อหนึ่งได้

EnviroNode Rev A schematic showing the USB input, TLV70033 regulator, ESP32-C3, MCP6001 gain stage, and RC filter with component values

สเกแมติก EnviroNode Rev A พร้อมค่า อิมเมจโดยผู้เขียน

ก่อนที่ Grok จะรีวิวบอร์ด เปิดเผยกฎทุกข้อที่จะใช้โดยตัวตรวจยืนยัน ฟังก์ชันจะส่งคืนการตรวจแบบผ่าน-ไม่ผ่าน 5 รายการที่สร้างจากข้อกำหนด 8 ข้อต่อไปนี้:

  • PWR-001: แรงดันอินพุต USB อยู่ระหว่าง 4.75 V ถึง 5.25 V
  • PWR-002: เรกูเลเตอร์ครอบคลุมโหลดพีก
  • PWR-003: โหลดที่ไม่ใช่ MCU ใช้งบ 10 mA
  • SIG-001: สเกลเต็มของเซ็นเซอร์คือ 1.0 V
  • ADC-001: อินพุต ADC ต้องไม่เกิน 2,250 mV
  • ADC-002: อินพุต ADC ต้องถึงอย่างน้อย 1,500 mV
  • BW-001: สัญญาณถึง 100 Hz สูญเสียไม่เกิน 1 dB
  • BW-002: ความถี่ตัดของฟิลเตอร์ต้องไม่เกิน 500 Hz

โมเดลได้รับชุดข้อกำหนดเดียวกัน ไม่มีขีดจำกัดของตัวตรวจยืนยันที่โผล่มาหลังจาก Grok เสนอวิธีแก้ไข

ข้อผิดพลาดทั้งสามที่ฝังไว้คืออะไร?

ข้อผิดพลาดทั้งสามตรวจด้วยตัวเลขได้ จำนวนข้อผิดพลาดไม่ถูกใส่ไว้ในพรอมต์

  • เรกูเลเตอร์เล็กเกินไป (PWR-002): TI TLV700 รับกระแสได้ 200 mA ขณะที่ แผ่นข้อมูล ESP32-C3 ระบุพีกการส่ง Wi‑Fi 335 mA และ เช็กลิสต์สเกแมติก ของ Espressif ขออย่างน้อย 500 mA

  • ADC เกินช่วง (ADC-001): กำลังขยาย 3 ทำให้ได้ 3.0 V ที่ ADC แต่ช่วงใช้งานตามแผ่นข้อมูลสูงสุด 2,500 mV และข้อกำหนดอนุญาต 90% ของค่านั้น

  • ฟิลเตอร์ช้าเกินไป (BW-001): 10 kΩ และ 1 µF ให้ความถี่ตัด 15.9 Hz ขณะที่สัญญาณถึง 100 Hz ต้องสูญเสียไม่เกิน 1 dB

ข้อบกพร่องของ ADC เกี่ยวกับช่วงการวัด ไม่ใช่ความเสียหายที่ขา ตัวเลือกที่ถูกต้อง เช่น ตัวต้านทาน LED และดีเลย์ CHIP_EN ทำให้ตรวจวัดผลบวกลวงได้

ลูปรีวิวทำงานอย่างไร?

รีวิวต้องมีขอบเขตที่ชัด: Grok เสนอการเปลี่ยนแปลง ขณะที่ Python เป็นเจ้าของผลผ่านหรือไม่ผ่าน ไดอะแกรมแสดงว่าจุดไหนที่เอกสารและเครื่องมือเข้าสู่ลูปนั้น

Diagram of the Grok 4.7 review loop: evidence feeds Grok, which calls server-side tools and the local verify_design function, then writes a structured review once all checks pass

ลูปรีวิวแยกการเสนอจากการยืนยันผล อิมเมจโดยผู้เขียน

กำหนดความสำเร็จก่อนเรียก API ครั้งแรก นับข้อบกพร่องก็ต่อเมื่อ Grok เชื่อมโยงกับข้อกำหนดและหลักฐานสนับสนุน นับวิธีแก้ไขก็ต่อเมื่อ verify_design() ส่งคืน all_pass = true

วิธีตั้งค่า Grok 4.7 API ใน Python

ต้องมีคีย์ xAI API ที่เติมเครดิตไว้ Python 3.10 ขึ้นไป และชุดพัฒนา Python ของ OpenAI (SDK) ที่ชี้ไปยัง URL ฐานของ xAI สร้างคีย์ใน xAI Console แล้วติดตั้งแพ็กเกจด้านล่าง

python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install openai python-dotenv pydantic httpx streamlit
pip install matplotlib schemdraw pytest  # Optional diagrams and verifier tests

ตัวอย่าง API ใช้แพ็กเกจกลุ่มแรก; กลุ่มที่สองรองรับไดอะแกรมและการทดสอบในรีโพ ผทดสอบด้วย Python 3.11.9, openai 3.19.2, pydantic 2.13.5, streamlit 1.64.0 และ httpx 0.28.1 บันทึกคีย์ไว้ในตัวแปรสภาพแวดล้อม XAI_API_KEY แล้วโหลดด้วย python-dotenv แทนการฝังไว้ในซอร์สโค้ด คู่มือ virtual environmentของเราจะอธิบายการตั้งค่าหากยังใหม่

ลองเรียก Grok 4.7 API ครั้งแรก

หากคีย์ใช้งานกับ Responses API ได้แล้ว ให้ข้ามไปขั้นตอนที่ 1 มิฉะนั้น คำขอด้านล่างจะตรวจคีย์ URL ฐาน และรหัสโมเดลในคราวเดียว

import os
import httpx
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()
client = OpenAI(api_key=os.environ["XAI_API_KEY"], base_url="https://api.x.ai/v1",
                timeout=httpx.Timeout(3600.0))

response = client.responses.create(
    model="grok-4.7",
    reasoning={"effort": "low"},
    input="In one sentence, what does a low-dropout regulator do?",
)
print(response.output_text)

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

ขั้นตอนที่ 1: Grok 4.7 รีวิววงจรจากรูปภาพอย่างเดียวได้ไหม?

ได้ Grok 4.7 รีวิวสเกแมติกจากรูปเพียงอย่างเดียวได้ ตราบใดที่พรอมต์บอกชัดว่าไม่มีเครื่องมือให้ใช้ ค่าเริ่มต้นจะส่ง PNG เป็น data URL แบบ base64 พร้อมกับข้อความข้อกำหนด

image = {
    "type": "input_image",
    "image_url": f"data:image/png;base64,{SCHEMATIC_B64}",
    "detail": "high",
}
response = client.responses.create(
    model="grok-4.7",
    input=[{"role": "user", "content": [
        image,
        {"type": "input_text", "text": REVIEW_PROMPT},
    ]}],
)

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

รีวิวจากรูปภาพอย่างเดียวเจออะไรบ้าง?

บอกโมเดลให้ชัดเจนเมื่อไม่มีเครื่องมือหรือแผ่นข้อมูลให้ มิฉะนั้นอาจจบการตอบหลังจากบอกว่าจะค้นสเปกที่เข้าถึงไม่ได้

ตามที่สรุปไว้ Grok ยืนยันข้อบกพร่องของฟิลเตอร์ด้วยความถี่ตัด 15.9 Hz และการสูญเสีย 16.1 dB ที่ 100 Hz ส่วนเรกูเลเตอร์และ ADC ถูกจัดไว้ภายใต้ "ต้องการหลักฐานเพิ่ม" แทนที่จะเดาขีดจำกัดของมัน

ขั้นตอนที่ 2: เพิ่มแผ่นข้อมูลด้วย Files API อย่างไร

เอกสารแนบเปลี่ยนความกังวลที่คลุมเครือให้เป็นข้ออ้างอิงตัวเลข อัปโหลดเอกสารแต่ละฉบับครั้งเดียวแล้วอ้างด้วย file_id

with open(DATASHEET_PATH, "rb") as datasheet:
    uploaded = client.files.create(
        file=datasheet,
        purpose="assistants",
        expires_after={"anchor": "created_at", "seconds": 7 * 24 * 3600},
    )
content = [image, *[{"type": "input_file", "file_id": fid} for fid in file_ids],
           {"type": "input_text", "text": EVIDENCE_PROMPT}]

ในบทเรียนนี้ตั้งค่า expires_after เป็น 7 วัน ดังนั้น ID ที่แคชไว้ใช้ได้เฉพาะในช่วงนั้น หากไม่ใช้ expires_after xAI จะเก็บไฟล์ที่อัปโหลดไว้จนกว่าจะลบ

ในคำตอบจาก SDK ของ OpenAI ที่บันทึกไว้ การค้นหาไฟล์แนบปรากฏเป็น custom_tool_call ชื่อ pdf_search และ pdf_browse ขณะที่การใช้งานนับไว้ใน document_search_calls นั่นเป็นพฤติกรรมที่สังเกตได้ ไม่ใช่สัญญาเรื่องชนิดเครื่องมือโดยรวม จึงมีการตรวจตัวนับการใช้งานที่มีเอกสารกำกับไว้ด้วย

แผ่นข้อมูลเปลี่ยนการรีวิวอย่างไร?

เอกสารช่วยคลี่คลายสองคำถามค้างในขั้นตอนที่ 1 และสนับสนุนข้อค้นพบด้านพลังงาน ADC และฟิลเตอร์ ข้อค้นพบเรกูเลเตอร์อ้างถึงค่ารับกระแส 200 mA ของ TLV700 พีกส่ง 335 mA ของ ESP32-C3 และคำแนะนำแหล่งจ่าย 500 mA

สำหรับฟิลเตอร์ Grok คำนวณค่าคอนเดนเซอร์ที่ทำให้ผ่านกฎแบนด์วิดท์ทั้งสองโดยไม่เปลี่ยน R5: ราว 32 ถึง 81 nF เหยื่อล่อทุกตัวถูกจัดไว้ภายใต้ "ตรวจแล้วว่าใช้ได้" พร้อมเหตุผล

ขั้นตอนที่ 3: ยืนยันการคำนวณด้วย Grok 4.7 Code Execution อย่างไร

Code execution คือ sandbox Python ฝั่งเซิร์ฟเวอร์ของ xAI เพิ่มเข้าไปใน tools เป็น {"type": "code_interpreter"} เมื่อใช้ไคลเอนต์ OpenAI พรอมต์เพิ่มกฎหนึ่งข้อ: ทุกข้ออ้างที่มีตัวเลขต้องถูกคำนวณก่อนจึงจะนับว่ายืนยันแล้ว

คู่มือ code execution ที่ลิงก์ไว้บอกว่า sandbox ไม่มีการเข้าถึงเครือข่ายและไม่คงสถานะระหว่างคำขอ สำหรับตัวเลขไม่กี่ค่าจากแผ่นข้อมูลก็เพียงพอ

Grok ควรตรวจการคำนวณอะไรบ้าง?

ขอให้ Grok ตรวจงบพลังงาน ช่วง ADC และแบนด์วิดท์ฟิลเตอร์ในสคริปต์เดียว หากวงจรไม่ใช่สายที่ถนัด ให้ข้ามเอาต์พุตด้านล่าง; สาระสำคัญอยู่ถัดจากนั้น

f=  100.0 Hz  |H|=0.157177  attenuation=16.0722 dB
fc required for <= 1 dB at 100 Hz: fc >= 196.5227 Hz
V_adc_fs = 3.0000 V
90% limit = 2.2500 V
required rating = max(headroom, mcu min) = 500.00 mA

ค่าความถี่ตัดขั้นต่ำ 196.5 Hz คือเลขที่วิธีแก้ฟิลเตอร์ขึ้นอยู่กับมัน และคำนวณด้วยโค้ดแทนที่จะปล่อยให้โมเดลคำนวณเอง แม้แต่มุมเผื่อที่ลดการสูญเสียน้อยที่สุดก็ยังสูญเสียมากกว่า 15 dB ที่ 100 Hz ดังนั้นคำตัดสินยังคงเดิม

ขั้นตอนที่ 4: Grok 4.7 ค้นเว็บผ่าน API ได้ไหม?

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

tools = [
    {"type": "code_interpreter"},
    {"type": "web_search", "filters": {"allowed_domains": ["ti.com", "espressif.com"]}},
]

คู่มือการค้นเว็บที่ลิงก์ไว้ยอมให้ใส่ allowed_domains ได้สูงสุด 5 รายการ รวมถึงซับโดเมนอย่าง docs.espressif.com จะคงขั้นตอนนี้ไว้แม้แผ่นข้อมูลแนบจะเป็นฉบับล่าสุด เพราะอาจจับฉบับแก้ไขที่ออกหลังการอัปโหลดได้

การอ้างอิงพิสูจน์อะไรได้บ้าง?

Grok ควรอ้างหน้าผลิตภัณฑ์ TI ปัจจุบัน เอกสาร ESP32-C3 เช็กลิสต์ฮาร์ดแวร์ และ errata ที่เกี่ยวข้อง จงมองการอ้างอิงเหล่านี้เป็นหลักฐานของแหล่งที่มา ไม่ใช่หลักฐานว่าข้อสรุปทางวิศวกรรมถูกต้อง

ตัวกรองโดเมนยังอาจคืนหน้าที่ไม่เกี่ยวข้อง ตรวจว่าทุกการอ้างอิงสนับสนุนชิ้นส่วนและขีดจำกัดที่ใช้ในคำนวณตรงกันจริง

Terminal trace showing Grok searching attached datasheets, running code execution, and checking manufacturer pages with web search

Grok ค้นหาไฟล์ คำนวณ ตรวจแหล่งข้อมูล อิมเมจโดยผู้เขียน

ขั้นตอนที่ 5: เพิ่มตัวตรวจยืนยันด้วย Grok 4.7 Function Calling อย่างไร

verify_design() เป็นฟังก์ชัน Python ธรรมดาที่รันบนเครื่อง และเป็นผู้ตัดสินเพียงคนเดียวว่างานปรับแก้ผ่านหรือไม่ Grok เสนอค่าการออกแบบผ่าน function calling และฟังก์ชันตรวจค่ากับขีดจำกัดตายตัว

VERIFY_DESIGN_TOOL = {
    "type": "function",
    "name": "verify_design",
    "description": "Deterministically check an EnviroNode revision against EN-REQ-001...",
    "parameters": {
        "type": "object",
        "properties": {
            "revision": {"type": "string"},
            "regulator_part": {"type": "string"},
            "gain_rf_ohm": {"type": "number"},
            "gain_rg_ohm": {"type": "number"},
            "filter_r_ohm": {"type": "number"},
            "filter_c_nf": {"type": "number"},
        },
        "required": ["revision", "regulator_part", "gain_rf_ohm",
                     "gain_rg_ohm", "filter_r_ohm", "filter_c_nf"],
    },
}

ความสามารถด้านพลังงานต้องเป็นไปตาม max((335 + 10) mA × 1.25, 500 mA) สำหรับ ADC ค่า 1.0 V × (1 + Rf/Rg) ต้องอยู่ระหว่าง 1,500 ถึง 2,250 mV การตรวจฟิลเตอร์วัดการสูญเสียที่ 100 Hz และจำกัดความถี่ตัดที่ 500 Hz; แต่ละเช็คส่งคืนค่า ขีดจำกัด และผลผ่านหรือไม่ผ่าน

สคีมาของเครื่องมือบอกเพียงว่าต้องการให้ Grok ส่งค่าอะไร แก่นของตรรกะผ่าน-ไม่ผ่านเป็น Python ปกติ:

import math

part = PARTS.get(regulator_part.strip().upper())
required_ma = max((335 + 10) * 1.25, 500)
power_ok = (
    part is not None
    and float(part["rated_iout_ma"]) >= required_ma
    and float(part["vin_max_v"]) >= 5.25
    and float(part["vout_v"]) == 3.3
)

gain = 1 + gain_rf_ohm / gain_rg_ohm
adc_mv = gain * 1000

fc = 1 / (2 * math.pi * filter_r_ohm * filter_c_nf * 1e-9)
loss_db = 10 * math.log10(1 + (100 / fc) ** 2)

checks = {
    "PWR-002": power_ok,
    "ADC-001": adc_mv <= 2250,
    "ADC-002": adc_mv >= 1500,
    "BW-001": loss_db <= 1.0,
    "BW-002": fc <= 500,
}
return {"all_pass": all(checks.values()), "checks": checks}

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

ทำไมต้องให้โค้ด ไม่ใช่โมเดล ให้เกรดวิธีแก้?

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

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

ขั้นตอนที่ 6: ออกแบบใหม่และยืนยันวงจรอย่างไร

ให้ Grok มีเป้าหมายเดียว: แก้การละเมิดที่ยืนยันแล้วทุกข้อด้วยชุดการเปลี่ยนแปลงที่น้อยที่สุดอย่างสมเหตุสมผล และอย่าประกาศว่างานออกแบบเสร็จจนกว่าการตรวจที่กำหนดไว้ก่อนหน้าจะผ่าน จัดให้มีหลักฐานและเครื่องมือจากขั้นตอนที่ 3 ถึง 5 แล้วตั้งขีดจำกัดจำนวนคำขอ

ตรงนี้เองที่คำเตือนเรื่องคอนเท็กซ์ในสรุปสั้น ๆ สำคัญ แก้ปัญหานี้ก่อนเพิ่มรอบสนทนา

ทำไมลูปที่ใช้ไฟล์หนักต้องบีบอัดคอนเท็กซ์?

คำขอที่ต่อเนื่องจะรวมผลเครื่องมือก่อนหน้า และการค้นหาเอกสารอาจคืนข้อความจำนวนมาก ในต้นแบบที่ล้มเหลว การต่อครั้งถัดไปถึง 1,116,321 โทเค็นและเกินหน้าต่าง 500,000 โทเค็นของ Grok 4.7

การบีบอัดคอนเท็กซ์ ไม่สามารถช่วยคำขอที่เกินขีดแล้วได้ ลูปที่แก้ไขแล้วจะบีบอัดทุกเทิร์นที่ค้นหาเอกสารสำเร็จก่อนส่งคำขอครั้งถัดไป

details = (response.usage.model_extra or {}).get(
    "server_side_tool_usage_details", {}
)
observed_attachment_call = any(
    item.type == "custom_tool_call"
    and item.name in {"pdf_search", "pdf_browse"}
    for item in response.output
)
used_documents = (
    details.get("document_search_calls", 0) > 0
    or observed_attachment_call
)

if used_documents:
    compacted = client.responses.compact(
        model="grok-4.7", input=history + list(response.output) + follow_up)
    history = list(compacted.output)  # pass the compaction item back unchanged
    # Compaction drops tool output, so restate the verifier's verdict ourselves.
    history.append({"role": "user", "content":
                    "verify_design results, exactly as returned: " + json.dumps(results)})
else:
    history = history + list(response.output) + follow_up
response = client.responses.create(model="grok-4.7", input=history, tools=TOOLS,
                                   store=False, prompt_cache_key=cache_key)

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

Rev B ผ่านการยืนยันไหม?

ผ่าน Grok เปลี่ยนชิ้นส่วนหนึ่งตัวในแต่ละซับซิสเต็มที่ล้มเหลว: พลังงาน กำลังขยาย ADC และแบนด์วิดท์ของฟิลเตอร์ ไดอะแกรมแสดงค่า Rev A และ Rev B ที่แน่นอน

Diagram comparing EnviroNode Rev A and Rev B changes to the regulator, amplifier gain resistor, and filter capacitor

การเปลี่ยน 3 ชิ้นส่วนแก้ Rev A ได้ อิมเมจโดยผู้เขียน

จากนั้นส่งค่าที่แก้ไขไปยัง verify_design() ซึ่งจะส่งผลหนึ่งรายการต่อข้อกำหนด

Verifier output showing the revised regulator, ADC range, and filter checks passing

งานออกแบบที่แก้ไขผ่านการตรวจทุกข้อ อิมเมจโดยผู้เขียน

ผลที่ไม่ผ่านจะส่งกลับเป็น function_call_output เพื่อให้ Grok ปรับงานออกแบบต่อไปจนกว่าจะผ่านเช็คหรือลิมิตคำขอหมด

ขั้นตอนที่ 7: ส่งคืนรีวิววงจรแบบมีโครงสร้างอย่างไร

เอาต์พุตแบบมีโครงสร้าง ส่งคืนอ็อบเจ็กต์ที่ตรงตามสคีมาแทนโพรสที่ต้องพาร์สเอง เรียก client.responses.parse() ด้วยโมเดล Pydantic ในบทสนทนาเดียวกัน โดยปิดการเรียกเครื่องมือ

class Finding(BaseModel):
    violated_requirement: str
    severity: Literal["blocker", "major", "minor"]
    evidence: list[str]
    recommended_change: str
    verifier_result: Literal["pass", "fail", "not_verified"]

parsed = client.responses.parse(
    model="grok-4.7", input=history + [REPORT_REQUEST],
    text_format=DesignReview, tools=TOOLS, tool_choice="none", store=False,
)

สคีมาที่ถูกต้องไม่ใช่หลักฐานว่าเนื้อหาถูกต้อง ดังนั้นให้รวมผลตัวตรวจยืนยันและบอก Grok ให้ยึด verifier_result ตามนั้น JSON ที่ได้สามารถส่งต่อเข้า issue tracker หรือคิวอนุมัติโดยมนุษย์ได้

รีวิวแบบมีโครงสร้างรายงานอะไรบ้าง?

รายงานแบบมีโครงสร้างควรทำเครื่องหมายว่าข้อบกพร่องเดิมแต่ละข้อได้รับการแก้ไข อ้างค่าที่วัดได้จากตัวตรวจยืนยัน และเก็บประเด็นที่ยังไม่ทดสอบไว้ภายใต้ open_risks สำหรับงานออกแบบนี้ ประเด็นดังกล่าวรวมถึงเรกูเลเตอร์ที่อยู่ตรงพื้น 500 mA พอดี และคอนเดนเซอร์ของ ADC ที่ต่างจากคำแนะนำของ Espressif

การเพิ่มระดับความพยายามให้เหตุผลของ Grok 4.7 ช่วยรีวิววงจรได้ไหม?

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

Effort

Defects / false positives

Verifier calls

Input / cached

Output / reasoning

Tools

Time

Cost

low

3/3, 0; PASS

1

256,006 / 197,120

7,950 / 2,323

7

111.2 s

$0.2990

high

3/3, 0; PASS

1

364,611 / 131,456

21,904 / 14,268

15

292.8 s

$0.7385

xhigh

3/3, 0; PASS

2

413,071 / 336,896

19,685 / 14,800

17

277.8 s

$0.5239

low ลดค่าตัวต้านทานและคงคอนเดนเซอร์ 1 µF ไว้ ทำให้ประเด็นโหลดเชิงความจุและการเซตตัวอยู่นอกตัวตรวจยืนยัน คำแนะนำโหลดเชิงความจุของ Microchip ระบุว่าตัวต้านทานอนุกรมช่วยปรับเสถียรภาพได้ ดังนั้นผลนี้ไม่ได้พิสูจน์ว่าวิธีแก้ไม่เสถียร; ควรทดสอบการตอบสนองความถี่ การตอบสนองต่อสเต็ป หรือทดสอบบนเบนช์ high เปลี่ยนคอนเดนเซอร์แทน ขณะที่ xhigh เลือกค่าท้ายสุดเหมือน high หลังมีการเรียกตัวตรวจยืนยันเพิ่มหนึ่งครั้ง

เมื่อไรที่การให้เหตุผลระดับ xhigh คุ้มค่า?

สำหรับการเปรียบเทียบครั้งเดียวนี้ high ให้สมดุลที่ดีกว่า เลี่ยงประเด็นโหลดที่ไม่ได้ทำแบบจำลองโดยไม่ต้องเรียกตัวตรวจยืนยันเพิ่มแบบ xhigh การรันต่อระดับเพียงครั้งเดียวยังสรุปอันดับโดยรวมไม่ได้

Grok 4.7 แก้วงจรได้ไหม?

คำตอบของคำถามเปิดคือ ได้ ภายในขอบเขตการตรวจของตัวตรวจยืนยันทั้งห้าข้อ ตารางสรุปผลก่อนหน้าไว้ในมุมมองเดียว

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

Grok แก้ไขข้อกำหนดที่เข้ารหัสไว้เรียบร้อย แต่ไม่ได้พิสูจน์ว่าบอร์ดที่แก้ไขสมบูรณ์ทางไฟฟ้าหรือพร้อมผลิต

เอกสารตัดสินว่าความกังวลมีหลักฐานหรือไม่ Python ตัดสินว่าฉบับแก้ผ่านหรือไม่ โพรสสละสลวยทดแทนทั้งสองอย่างไม่ได้

ชมรีวิวบน Streamlit

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

รีวิวแบบไลฟ์แสดงเครื่องมือและรายงาน วิดีโอโดยผู้เขียน

รีวิวเต็มมีค่าใช้จ่ายเท่าไร?

เส้นทางแบบไล่ระดับจากฐานภาพอย่างเดียวไปจนถึงการออกแบบใหม่ระดับ high มีค่าใช้จ่ายราว $3.10 ยอดรวมครอบคลุมขั้นตอนที่ 1 ถึง 4 บวกกับการออกแบบใหม่ครั้งสุดท้ายและรายงานแบบมีโครงสร้าง

การเปรียบเทียบ low/high/xhigh แยกต่างหากเพิ่มราว $1.56 จำนวนเงินที่เรียกเก็บมาจาก cost_in_usd_ticks; ยอดรวม $3.10 รวมค่าบีบอัดประมาณ $0.11 เพราะคำตอบนั้นมีจำนวนโทเค็นแต่ไม่มีฟิลด์ค่าที่เรียกเก็บ คำขอที่ตั้งค่าล้มเหลวและดีบักไม่รวมในนี้

ข้อจำกัดของการรีวิววงจรด้วย Grok 4.7

การเรียก verify_design ที่ผ่านหมายถึงฉบับแก้ผ่านเช็คที่เขียนไว้ห้าข้อเท่านั้น โปรดคำนึงถึงช่องว่างเหล่านี้ก่อนมอบหมายให้ระบบนี้ตรวจบอร์ดจริง

  • สเกแมติกภาพไม่ใช่งานออกแบบฮาร์ดแวร์: ไม่มีการตรวจเลย์เอาต์ PCB หรือความร้อน และไม่ได้สร้างบอร์ดจริง
  • ตัวตรวจยืนยันอาจสร้างจุดบอด: ไม่ได้ตรวจเสถียรภาพโหลดเชิงความจุ การเซตตัว การคายความร้อนของ LDO หรือมุมทอลเลอแรนซ์ของชิ้นส่วน

การเปรียบเทียบระดับการให้เหตุผลเป็นกรณีศึกษา ไม่ใช่เกณฑ์แบบ EEBench สำหรับฮาร์ดแวร์จริง เพิ่มการจำลอง การวิเคราะห์ทอลเลอแรนซ์ และการอนุมัติโดยมนุษย์ก่อนยอมรับฉบับแก้

ข้อคิดส่งท้าย

ผู้ตรวจวงจรค้นพบและแก้ทุกข้อผิดพลาดที่ฝังไว้ทั้งสาม แต่ผลลัพธ์ไม่ใช่ชัยชนะใส ๆ Rev B ผ่านเช็คทั้งห้าตั้งแต่การส่งครั้งแรก ขณะที่การเปรียบเทียบระดับ low เผยความเสี่ยงโหลดเชิงความจุและการเซตตัวที่เช็คเหล่านั้นไม่ได้ครอบคลุม ปัญหา API ที่ยากกว่าคือการคุมประวัติที่หนักเอกสารให้อยู่ในหน้าต่าง 500,000 โทเค็น

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

คำถามที่พบบ่อย

Grok 4.7 API ใช้ฟรีหรือไม่?

ไม่ฟรี xAI Quickstart ขอให้เติมเครดิตในบัญชีก่อน ตรวจเมทาดาตาการใช้งานหลังแต่ละคำตอบ และตั้งลิมิตการใช้จ่ายก่อนเปรียบเทียบระดับการให้เหตุผล

ใช้ xAI Python SDK แทน OpenAI SDK ได้ไหม?

ได้ xai-sdk ใช้งานกับ grok-4.7 ได้ แต่ชื่อบางอย่างต่างกัน: การรันโค้ดคือ code_execution ที่นั่น และ code_interpreter ใน SDK ของ OpenAI ตัวอย่างใช้ SDK ของ OpenAI เพราะรูปแบบ Responses เดียวกันนำไปใช้กับผู้ให้บริการรายอื่นได้

Grok 4.7 สตรีมการเรียกเครื่องมือแบบเรียลไทม์ได้ไหม?

ได้ ตั้งค่า stream=True เพื่อรับกิจกรรมระหว่างที่คำขอกำลังทำงาน ในการใช้งานครั้งนี้ รายการเครื่องมือที่เสร็จสมบูรณ์มาถึงผ่าน response.output_item.done และอีเวนต์ response.completed สุดท้ายมีอ็อบเจ็กต์ usage; โปรดยืนยันชื่อนิยมของอีเวนต์เมื่ออัปเกรด SDK หรือ API

xAI เก็บสเกแมติกและแผ่นข้อมูลที่อัปโหลดไว้หรือไม่?

ตามค่าเริ่มต้น xAI เก็บคำขอและคำตอบของ API ไว้ 30 วัน และจะไม่ใช้ฝึกโมเดลหากไม่ได้รับอนุญาต ไฟล์ที่อัปโหลดจะอยู่จนกว่าจะลบหรือจนกว่า expires_after จะหมดอายุ Zero Data Retention ปิดการใช้งาน Files API ที่ใช้ที่นี่ จึงต้องหาวิธีให้เอกสารแบบอื่นแทน

Grok 4.7 แทนวิศวกรไฟฟ้าได้ไหม?

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

หัวข้อ
ปัญญาประดิษฐ์

เรียนรู้ AI กับ DataCamp

คอร์ส

แนวคิดของ Large Language Models (LLMs)

2 ชม.
111.4K
ค้นพบศักยภาพเต็มที่ของ LLMs ด้วยคอร์สเชิงแนวคิดที่ครอบคลุมการใช้งาน LLMs วิธีการฝึกอบรม ประเด็นจริยธรรม และงานวิจัยล่าสุด
ดูรายละเอียดRight Arrow
เริ่มคอร์ส
ดูเพิ่มเติมRight Arrow