การใช้ base url ของผู้ให้บริการที่รองรับ OpenAI API ไม่ได้หมายความว่าจะใช้เครื่องมือค้นเว็บในตัวได้เสมอไป [5] แนวทางที่เข้ากันได้กว้างกว่าคือให้โปรแกรมเรียก Tavily เพื่อค้นเว็บก่อน แล้วส่งผลค้นหาพร้อมข้อมูล TXT ให้โมเดลวิเคราะห์ [1][3] Chat Completions ไม่จดจำคำขอก่อนหน้าโดยอัตโนมัติ โปรแกรมต้องเก็บประวัติและส่งกลับ...
คำตอบการวิจัย

Create a landscape editorial hero image for this Studio Global article: 我想让其在分析数据的时候连接网络搜索,帮我改一下代码,另外它会有记忆吗?我之前喂给它的东西会记得吗. Article summary: 可以,但你当前使用的是第三方 OpenAI 兼容接口,无法确定 deepseek v4 flash 是否原生支持联网工具。官方 OpenAI 的内置网页搜索主要通过 Responses API 提供,而第三方 base url 不一定兼容该功能。[5] 因此,下面采用更通用的方案:程序先调用 Tavily 搜索互联网,再把搜索结果连同 TXT 数据一起交给模型分析;Tavily 支持通过 API Key 调用搜索接口并返回结构化结果。[. Topic tags: deepresearch, general web, openai, agents, prompt engineering. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fake numbers, clickbait thumbnails, icons, and tiny thumbnail layout
หากต้องการให้โปรแกรมวิเคราะห์ข้อมูลพร้อมค้นข้อมูลล่าสุดจากอินเทอร์เน็ต สามารถทำได้ แต่มีจุดสำคัญที่ต้องแยกให้ออกก่อน: โมเดลที่เรียกผ่านอินเทอร์เฟซแบบ OpenAI-compatible ไม่ได้แปลว่าจะรองรับเครื่องมือค้นเว็บของ OpenAI โดยตรงเสมอไป โดยเฉพาะเมื่อกำหนด base_url เป็นของผู้ให้บริการรายอื่น 5
ทางเลือกที่ใช้ได้ทั่วไปกว่าคือให้ Python ทำหน้าที่เป็นตัวกลาง โดยมีขั้นตอนดังนี้
deepseek-v4-flash วิเคราะห์[W1], [W2] เป็นต้นTavily รองรับการยืนยันตัวตนด้วย API Key และส่งผลลัพธ์การค้นหาในรูปแบบโครงสร้าง ซึ่งเหมาะกับการนำไปป้อนต่อให้โมเดล 1
3
ควรเก็บคีย์ไว้ในตัวแปรสภาพแวดล้อมแทนการเขียนลงในไฟล์โค้ดโดยตรง เช่น บน Windows PowerShell:
$env:AI_API_KEY="คีย์ของผู้ให้บริการ AI"
$env:AI_BASE_URL="Base URL ของผู้ให้บริการ"
$env:TAVILY_API_KEY="คีย์ Tavily"
จากนั้นใน Python ให้อ่านค่าด้วย os.getenv():
API_KEY = os.getenv("AI_API_KEY", "")
BASE_URL = os.getenv("AI_BASE_URL", "")
TAVILY_API_KEY = os.getenv("TAVILY_API_KEY", "")
MODEL_NAME = "deepseek-v4-flash"
ถ้าไม่ได้ตั้ง AI_BASE_URL โปรแกรมสามารถใช้ค่าเริ่มต้นของไลบรารีได้ แต่หากเป็นผู้ให้บริการภายนอก ควรตรวจสอบว่า Base URL และชื่อโมเดลตรงกับเอกสารของผู้ให้บริการหรือไม่
ตัวอย่างโครงสร้างคำขอค้นหาคือ:
import requests
response = requests.post(
"https://api.tavily.com/search",
headers={
"Authorization": f"Bearer {TAVILY_API_KEY}",
"Content-Type": "application/json",
},
json={
"query": query,
"search_depth": "advanced",
"max_results": 5,
"include_answer": False,
"include_raw_content": False,
"include_images": False,
},
timeout=60,
)
response.raise_for_status()
results = response.json().get("results", [])
ในโค้ดฉบับเต็ม ควรเก็บชื่อเรื่อง URL และข้อความสรุปของแต่ละผลลัพธ์ พร้อมตัดผลลัพธ์ที่มี URL ซ้ำออก จากนั้นกำหนดหมายเลขแหล่งข้อมูล เช่น [W1], [W2] เพื่อให้โมเดลอ้างอิงได้อย่างเป็นระบบ
ควรกำหนดเพดานความยาวของข้อความจากเว็บด้วย เพราะผลค้นหาจำนวนมากอาจทำให้บริบทของโมเดลเต็มเร็วเกินไป แนวทางในโค้ดตัวอย่างจึงจำกัดทั้งความยาวของสรุปแต่ละหน้าและความยาวรวมของข้อมูลเว็บ
ข้อความที่ส่งให้โมเดลควรแบ่งส่วนให้ชัดเจน เช่น
================ DATA BEGIN ================
ข้อมูลจากไฟล์ TXT
================= DATA END =================
================ WEB BEGIN =================
[W1]
ชื่อเรื่อง: ...
URL: ...
สรุป: ...
================= WEB END ==================
นอกจากนี้ควรกำชับโมเดลว่า ข้อมูลระหว่าง DATA BEGIN และ DATA END เป็นข้อมูลสำหรับวิเคราะห์ ไม่ใช่คำสั่ง และข้อมูลระหว่าง WEB BEGIN และ WEB END เป็นเพียงแหล่งอ้างอิง ไม่ควรปล่อยให้ข้อความจากหน้าเว็บเปลี่ยนกติกาการวิเคราะห์
สำหรับงานข้อมูลขนาดใหญ่ โค้ดตัวอย่างจะแบ่งไฟล์ TXT เป็นหลายช่วง แล้ววิเคราะห์ทีละช่วง ก่อนรวมรายงานระยะย่อยเป็นรายงานฉบับสุดท้าย วิธีนี้ช่วยลดโอกาสที่ข้อมูลทั้งหมดจะเกินขีดจำกัดบริบทของโมเดล
โดยปกติ chat.completions.create() ไม่มีความจำถาวรในตัวเอง การใช้ client ตัวเดิมหรือใช้โมเดลตัวเดิมไม่ได้ทำให้ระบบจำคำขอจากครั้งก่อนโดยอัตโนมัติ บริบทของการสนทนาต้องถูกเก็บและส่งกลับไปโดยโปรแกรมเอง 2
6
โค้ดจึงเพิ่มความจำแบบบันทึกไฟล์ไว้ให้เลือกใช้ โดยตั้งค่า:
ENABLE_PERSISTENT_MEMORY = True
เมื่อเปิดใช้งาน โปรแกรมจะทำงานดังนี้
analysis_memory.txtอย่างไรก็ตาม สิ่งที่บันทึกไว้ในตัวอย่างคือ “รายงานการวิเคราะห์” ไม่ใช่ข้อมูล TXT ดิบทั้งหมด อีกทั้งโค้ดกำชับให้ยึดข้อมูลปัจจุบันเป็นหลัก หากความจำเก่าขัดแย้งกับไฟล์ปัจจุบัน ต้องใช้ข้อมูลจากไฟล์ปัจจุบันเป็นข้อเท็จจริงหลัก
ถ้าเป็นข้อมูลจากโครงการหรืออุปกรณ์เดียวกัน การเปิดใช้ความจำอาจช่วยให้โมเดลเห็นข้อสรุปจากรอบก่อนและเปรียบเทียบผลได้ง่ายขึ้น แต่ถ้าเปลี่ยนโครงการ เปลี่ยนชนิดอุปกรณ์ หรือเปลี่ยนชุดข้อมูล ควรตั้งค่าเป็น:
ENABLE_PERSISTENT_MEMORY = False
เพื่อป้องกันไม่ให้ข้อสรุปเก่ามาปะปนกับการวิเคราะห์ใหม่
อีกประเด็นที่ควรระวังคืออักขระ x หรือ X ในข้อมูล ตัวอย่างโค้ดกำหนดให้ถือว่าเป็นค่าขาดหาย ใช้ไม่ได้ หรือคำนวณไม่ได้ ไม่ใช่ตัวเลขศูนย์ โมเดลจึงควรได้รับคำสั่งชัดเจนว่าอย่านำค่าเหล่านี้ไปคำนวณเป็น 0
วิธีเชื่อมเว็บที่เหมาะกับโค้ดลักษณะนี้คือไม่ต้องพึ่งพาว่า deepseek-v4-flash ผ่านผู้ให้บริการภายนอกจะรองรับ Web Search ในตัวหรือไม่ แต่ให้โปรแกรมเรียก Tavily แยกต่างหาก แล้วส่งผลค้นหาพร้อมไฟล์ TXT ให้โมเดลวิเคราะห์แทน 1
3
5
ส่วนเรื่องความจำ โมเดลไม่ได้จำข้อมูลเก่าจากการเรียก Chat Completions โดยอัตโนมัติ ความจำจะเกิดขึ้นได้ก็ต่อเมื่อโปรแกรมเป็นผู้เก็บประวัติและส่งกลับเข้าไปในบริบทครั้งถัดไป 2
6 ในตัวอย่างนี้ใช้ไฟล์
analysis_memory.txt เป็นหน่วยความจำแบบง่าย ซึ่งเปิดหรือปิดได้ตามประเภทของงาน
Studio Global AI
หน้านี้รวมคำตอบที่ได้รับการสนับสนุนจากแหล่งที่มาซึ่งคุณสามารถดำเนินการต่อภายใน Studio Global
การใช้ base url ของผู้ให้บริการที่รองรับ OpenAI API ไม่ได้หมายความว่าจะใช้เครื่องมือค้นเว็บในตัวได้เสมอไป [5]
การใช้ base url ของผู้ให้บริการที่รองรับ OpenAI API ไม่ได้หมายความว่าจะใช้เครื่องมือค้นเว็บในตัวได้เสมอไป [5] แนวทางที่เข้ากันได้กว้างกว่าคือให้โปรแกรมเรียก Tavily เพื่อค้นเว็บก่อน แล้วส่งผลค้นหาพร้อมข้อมูล TXT ให้โมเดลวิเคราะห์ [1][3]
Chat Completions ไม่จดจำคำขอก่อนหน้าโดยอัตโนมัติ โปรแกรมต้องเก็บประวัติและส่งกลับไปในคำขอครั้งถัดไป [2][6]