อะแดปเตอร์สำหรับเชื่อมต่อ AI LLM กับแหล่งข้อมูลและข้อมูลกราวด์แบบเรียลไทม์
รายการการปรับปรุงที่สำคัญ
ปล่อย | วันที่ | คุณสมบัติที่สำคัญ |
---|---|---|
2.0.5 | 01 เมษายน 2024 | การอัปเดตที่สำคัญ: รองรับ ClaudeAI นอกเหนือจาก OpenAI และ GoogleAI |
2.0.0 | 05 มกราคม 2024 | การอัปเดตที่สำคัญ: รองรับ GoogleAI นอกเหนือจาก OpenAI |
1.3.0 | 16 ธันวาคม 2023 | ปรับปรุงการแจ้งเตือนเพื่อใช้ข้อมูลที่เกี่ยวข้องและสร้างคำตอบที่เกี่ยวข้อง ขณะนี้การตอบกลับสำหรับวิธีการทั้งหมดให้ข้อมูลรันไทม์แล้ว |
1.2.9 | 03 พ.ย. 2023 | (1) การกำหนดค่าเอเจนต์สามารถระบุคีย์ภาษาได้ (เป็นทางเลือก) เมื่อตั้งค่านี้ LLM จะคิดและตอบสนองในภาษาที่ระบุเสมอ (โดยไม่คำนึงถึงภาษาอินพุต) หมายเหตุ : คุณภาพการแปลอาจไม่ดีที่สุดในบางกรณี ดังนั้นจึงขอแนะนำอย่างยิ่งให้ทำการทดสอบอย่างละเอียด (2) การตอบสนองจากวิธีออลอินวันรวมถึงข้อมูลการต่อสายดินที่ใช้โดย LLM เพื่อสร้างการตอบสนอง สิ่งนี้ควรปรับปรุงความน่าเชื่อถือ |
1.2.8 | 26 ต.ค. 2023 | รวมเทคนิคการกระตุ้นแบบเจาะลึกเพื่อปรับปรุงคุณภาพการตอบสนอง |
1.2.2 | 18 ต.ค. 2023 | ปรับปรุง LLM prompts และตรรกะสำหรับการกำหนด API |
1.1.1 | 09 ต.ค. 2023 | เปิดตัว LLM พร้อมท์ให้รวมรสชาติของ AI ตามรัฐธรรมนูญเพื่อให้แน่ใจว่าข้อมูลที่ผู้ใช้ได้รับมีความยุติธรรม มีความรับผิดชอบ ให้ความเคารพ และมีมนุษยธรรม |
1.1.0 | 08 ต.ค. 2023 | แนะนำความสามารถในการสร้างบริบท/หน่วยความจำสำหรับคำถามติดตามผล |
1.0.0 | 08 ต.ค. 2023 | การเปิดตัวครั้งแรก |
เนื่องจากเป็นโมเดลปัญญาประดิษฐ์หลายรูปแบบ LLM จึงมีการนำไปประยุกต์ใช้อย่างกว้างขวางในการสร้างเนื้อหาโดยมีคำสั่งน้อยที่สุด เทคนิคการแจ้งเตือน เช่น ช็อตเป็นศูนย์หรือไม่กี่ช็อต เป็นที่นิยมในหมู่ผู้ใช้แอปพลิเคชันแชททุกวันที่สร้างจาก LLM ดังกล่าว ที่กล่าวว่าแม้ว่าคุณภาพของการตอบกลับจะดีเยี่ยม แต่เราจะไว้วางใจได้มากแค่ไหน? เราจะรู้ได้อย่างไรว่าโมเดลไม่ได้ "สร้าง" (หรือที่เรียกว่าภาพหลอน) ทันที
ด้วยเหตุนี้ การต่อสายดิน LLM โดยการให้ข้อมูลเชิงบริบทร่วมกับเทคนิคการกระตุ้นเตือนที่เหมาะสมจึงมีความสำคัญมาก การใช้ข้อความแจ้งพร้อมข้อมูลพื้นฐานเป็นบริบทเพื่อช่วยให้ LLM สร้างการตอบสนองที่ดีขึ้นเป็นแนวทางปฏิบัติที่ปฏิบัติตามกันอย่างแพร่หลาย
วิธีการหนึ่งดังกล่าวคือ Retrieval-Augmented Generation (RAG) ซึ่งอาศัยการจัดเก็บและค้นหาข้อความที่ฝังไว้กับ LLM พร้อมกับข้อความแจ้ง อย่างไรก็ตาม RAG อาศัยข้อมูลคงที่ที่แปลงเป็นการฝังข้อความและจัดเก็บไว้ในฐานข้อมูลกราฟ (หรือที่เรียกว่าฐานข้อมูลเวกเตอร์) เพื่อให้สามารถ ดึง ข้อมูลที่เกี่ยวข้องออกมาและ เสริม ผ่านการต่อสายดินเพื่อ สร้าง ข้อความ/การตอบกลับ
รูปแบบ RAG อาจก่อให้เกิดคำถามว่าสามารถใช้ข้อมูลแบบเรียลไทม์ร่วมกับ LLM เพื่อสร้างการตอบสนองที่มีประสิทธิภาพและเชื่อถือได้ได้หรือไม่ คำตอบง่ายๆ คือ "แน่นอน ใช่!" - แต่นั่นหมายถึงความรับผิดชอบที่มากขึ้นบนไหล่ของ Application Developers นักพัฒนาจำเป็นต้องเรียก API เพื่อล้อมการตอบกลับภายในพร้อมต์เพื่อให้ LLM สร้างการตอบกลับที่เกี่ยวข้อง แต่การเรียก API เดิมซ้ำแล้วซ้ำอีกสำหรับทุกคำถามจะได้ผลหรือไม่ - ส่วนใหญ่อาจจะไม่! เราจะกำหนดแบบไดนามิกได้อย่างไรว่าควรเรียก API ใดและพารามิเตอร์ใดที่ต้องส่งผ่านตามคำถาม นั่นก็ดูเหมือนเป็นความสามารถของ LLM เช่นกัน
นั่นคือจุดที่ AI-Dapter (อ่านว่า AI Adapter ) เข้ามามีบทบาท AI-Dapter เร่งกระบวนการพัฒนาแอปพลิเคชันบน LLM สำหรับนักพัฒนา ทำให้พวกเขามุ่งเน้นไปที่แอปพลิเคชันเท่านั้น ในขณะเดียวกันก็แบ่งเบาภาระของกิจกรรมต่อไปนี้ไปยัง LLM
การระบุ จุดสิ้นสุด API ที่ถูกต้องจากที่เก็บ API ที่กำหนดไว้ล่วงหน้า
การรับ ข้อมูลแบบเรียลไทม์จากจุดสิ้นสุด API ที่ระบุ
การสร้าง การตอบสนองโดยใช้แบบจำลอง LLM ที่เลือก
ประสบการณ์ของนักพัฒนาได้รับการปรับปรุงอย่างมากโดยการเสียบเฟรมเวิร์ก AI-Dapter ภายในโค้ดแอปพลิเคชัน และใช้เป็น กล่องดำ เพื่อดำเนินการตอบคำถามของผู้ใช้โดยใช้ LLM โปรดทราบว่าคำถามของผู้ใช้เหล่านี้อาจใกล้เคียงกับการแจ้งแบบ Zero-shot!
ผลงานจริงเบื้องหลังกล่องดำนี้ประกอบด้วย:
ความสามารถในการรวมโมเดล LLM ที่คุณเลือกเข้ากับข้อมูลรับรองของคุณ (หมายเหตุ: ปัจจุบันรองรับเฉพาะรุ่น OpenAI GPT เท่านั้น)
เอ็นจิ้นบูรณาการที่ใช้ประโยชน์จากอินพุตของผู้ใช้เพื่อระบุตัวตนของ -
แหล่งข้อมูลที่ใช้ API
การได้มาซึ่งข้อมูลแบบเรียลไทม์จาก API เหล่านั้น และ
การสร้างการตอบสนองโดยใช้ข้อมูลเรียลไทม์โดยใช้ LLM
กรุณาส่งข้อเสนอแนะหรือคำขอคุณสมบัติใหม่ผ่านทางการสนทนา GitHub
กรุณาส่งปัญหาของคุณผ่านทาง GitHub Issues
รันคำสั่งต่อไปนี้บนบรรทัดคำสั่งเพื่อติดตั้ง AI-Dapter สำหรับโปรเจ็กต์ NodeJS ของคุณ ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเรกทอรีรากของโครงการ
npm ติดตั้ง ai-dapter --save
สมมติว่าคุณได้ตั้งค่าโปรเจ็กต์ typescript NodeJS แล้ว ให้นำเข้าคลาส AIDapter ดังนี้
นำเข้า AIDapter จาก "ai-adapter";
ในการเริ่มต้น AI-Dapter คุณต้องผ่านพารามิเตอร์บังคับและพารามิเตอร์ทางเลือกบางอย่างเพื่อให้การตั้งค่าเสร็จสมบูรณ์ ตัวอย่างแสดงอยู่ด้านล่าง ตามด้วยเอกสารประกอบของพารามิเตอร์ที่รองรับ
const ai = AIDapter ใหม่ ({ "app_name": "<<ชื่อแอปแบบสั้น>>" "ผู้ให้บริการ": "OpenAI", "model_name": "gpt-3.5-turbo-16k", "endpoint": "https://api.openai.com/v1/chat/completions", "authentication": {"api_key": "<<คีย์ OPENAI ของคุณ>>", "org_id": "<< รหัสองค์กร OPENAI ของคุณ>>" - "อุณหภูมิ": "<<ระหว่าง 0.0 ถึง 2.0>>"});
รายการพารามิเตอร์ที่รองรับเพื่อเริ่มต้นการตั้งค่า
พารามิเตอร์ | บังคับ(M) / ทางเลือก(O) | วัตถุประสงค์ | ค่าที่เป็นไปได้ |
---|---|---|---|
app_name | ม | ชื่อแอปแบบสั้น | - |
provider | ม | ผู้ให้บริการโมเดล LLM หมายเหตุ : ปัจจุบันรองรับเฉพาะรุ่นที่ OpenAI ให้โดยตรงเท่านั้น | "โอเพนเอไอ" |
model_name | โอ | ให้คุณเลือกรุ่นใดก็ได้ที่ผู้ให้บริการออกให้ เราขอแนะนำให้ใช้รุ่นที่อนุญาตขนาดโทเค็นขนาดใหญ่ เช่น gpt-3.5-turbo-16k หรือ gemini-pro หรือ claude-3-haiku-20240307 | - |
endpoint | โอ | ตำแหน่งข้อมูลที่ผู้ให้บริการให้บริการโมเดล LLM คุณอาจต้องดูเอกสารเฉพาะของผู้ให้บริการ ตัวอย่างเช่น โมเดลการแชทเสร็จสมบูรณ์ของ OpenAI ให้บริการจาก https://api.openai.com/v1/chat/completions endpoint โมเดล GoogleAI ให้บริการจาก https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent ://generative language.googleapis.com/v1/models/gemini- https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent และโมเดล ClaudeAI ให้บริการจาก https://api.anthropic.com/v1/messages | - |
authentication | ม | ระบุรายละเอียดการตรวจสอบสิทธิ์ตามที่ผู้ให้บริการของคุณระบุ ตัวอย่างเช่น เนื่องจาก OpenAI ต้องใช้คีย์ API และรหัสองค์กร จึงมีการระบุไว้ภายใต้ฟิลด์ api_key และ org_id ดังที่แสดงในตัวอย่างการเริ่มต้นด้านบน | - |
telemetry | โอ | การรวบรวมข้อมูลทางไกล ค่าเริ่มต้นเป็นจริง | จริง/เท็จ |
AI-Dapter ช่วยให้คุณปรับแต่งการกำหนดค่าเอเจนต์เฉพาะได้ เช่น การเพิ่มบทบาท บุคลิกภาพ ฯลฯ คุณสามารถปรับแต่งการกำหนดค่าข้อมูลเฉพาะได้ เช่น การควบคุมจำนวนบันทึกจากการตอบสนองของ API แบบเรียลไทม์ การผ่านบริบทเพิ่มเติม หรือ ข้อมูลพื้นฐานเพื่อจำลองการติดตามผล ฯลฯ
ตัวเลือกเอเจนต์และการกำหนดค่าจะถูกส่งผ่านเป็นออบเจ็กต์เดียวดังนี้ โปรดดูส่วนที่เหมาะสมด้านล่างเพื่อค้นหาและปรับค่าการกำหนดค่าเหล่านี้
ให้ตัวเลือก: AIDapterOptions = { "agentConfig": { "role": "ผู้ช่วยส่วนตัว" - "dataConfig": { "max_records": 7 -
ด้านล่างนี้คือพารามิเตอร์การกำหนดค่าเอเจนต์ที่รองรับในปัจจุบัน เพิ่มฟิลด์เหล่านี้ภายใต้อ็อบเจ็กต์ agentConfig
พารามิเตอร์ | บังคับ(M) / ทางเลือก(O) | วัตถุประสงค์ | ค่าที่เป็นไปได้ |
---|---|---|---|
role | ม | ช่วยแนะนำแนวทางของ LLM ในการตอบคำถามของผู้ใช้ ตัวอย่างเช่น ในบทบาทของจ่ากองทัพ LLM อาจตอบคำถามเกี่ยวกับเวลาปัจจุบันประมาณว่า "เวลาปัจจุบันคือ 08:01 น. EDT" ในขณะที่นักแสดงตลกที่มักจะเล่าเรื่องตลกเพียงบรรทัดเดียวเกี่ยวกับคำถามของฉัน อาจตอบกลับประมาณว่า "ได้เวลาซื้อนาฬิกาแล้ว ล้อเล่นน่า ตอนนี้เวลา 8.01 น. ของวันที่ 7 ตุลาคม 2023 ตามเวลาออมแสงตะวันออก (EDT)" | - |
personality | โอ | ให้บุคลิกเข้ากับน้ำเสียงของการตอบสนองของ LLM | - |
language | โอ | ภาษาที่คุณต้องการให้ตัวแทนตอบกลับโดยไม่คำนึงถึงภาษาที่ถามคำถามของผู้ใช้ ค่าเริ่มต้น=ภาษาอังกฤษ | - |
expert_at | โอ | หาก LLM ถือว่าพวกเขาเป็นผู้เชี่ยวชาญในสาขาใดด้านหนึ่ง เช่น การดูแลสุขภาพหรือเครื่องยนต์ของรถยนต์ เป็นต้น | - |
max_words | โอ | ควบคุมว่าการตอบสนองของ LLM ควรอยู่ภายในระยะเวลาใดหรือสั้นเพียงใด ค่าเริ่มต้นคือน้อยกว่า 200 คำ | จำนวนใดๆ ระหว่าง 1 ถึง 200 |
ด้านล่างนี้คือพารามิเตอร์การกำหนดค่าข้อมูลที่รองรับในปัจจุบัน เพิ่มฟิลด์เหล่านี้ภายใต้วัตถุ dataConfig
พารามิเตอร์ | บังคับ(M) / ทางเลือก(O) | วัตถุประสงค์ | ค่าที่เป็นไปได้ |
---|---|---|---|
max_records | ม | ควบคุมจำนวนบันทึกยอดนิยมจากชุดผลลัพธ์ที่ได้รับจากการเรียก API แบบเรียลไทม์ที่ควรขายปลีก พารามิเตอร์นี้จำเป็นต่อการควบคุมขนาดโทเค็นอินพุตเนื่องจากผลลัพธ์จากการเรียก API ใช้ในการต่อสายดิน หมายเหตุ : เนื่องจากมีเพียงแถว X บนสุดเท่านั้นที่ยังคงอยู่ วิธีที่ดีที่สุดคือจัดเตรียมจุดสิ้นสุด API ที่จะรวมข้อมูลที่จัดเรียงจากมากไปน้อย ค่าเริ่มต้น=10 | ตัวเลขใดๆ ระหว่าง 1 ถึง 10 |
additional_context | โอ | สามารถให้บริบทเพิ่มเติมได้เมื่อคาดว่าจะมีความสามารถคล้ายการติดตามผล (ดูตัวอย่างจาก 6.3 การสร้างการตอบสนอง LLM ด้วยข้อมูลเรียลไทม์กราวด์) | ต้องเป็นอาร์เรย์ที่มีโครงสร้างดังนี้: [{ "question": "", "response_summary": "", "entities": { ... } }, { ... }] |
max_contexts | โอ | คงบริบท X ล่าสุดไว้ AI-Dapter จะเก็บสององค์ประกอบสุดท้ายของอาร์เรย์ additional_context โดยสมมติว่าบริบทล่าสุดจะถูกต่อท้ายเสมอที่ส่วนท้ายของอาร์เรย์นี้ | 1 หรือ 2 |
AI-Dapter มีความสามารถสามประการดังต่อไปนี้ และสามวิธีในการเข้าถึงความสามารถเหล่านี้
คำแนะนำ: เพื่อประสบการณ์นักพัฒนาที่ดีที่สุด ดู 6.3 การสร้างการตอบสนอง LLM ด้วยข้อมูลเรียลไทม์แบบกราวด์
AIDapter.getRealtimeSources (อินพุต: สตริง, apiRepository: Types.APIRepository []): สัญญา <ไม่ทราบ>
ใช้วิธีนี้หากวัตถุประสงค์ของคุณคือการได้รับตำแหน่งข้อมูล API ที่เกี่ยวข้องตามคำถามของผู้ใช้
พารามิเตอร์ | บังคับ(M) / ทางเลือก(O) | วัตถุประสงค์ | ประเภทข้อมูล |
---|---|---|---|
input | ม | คำถามจากผู้ใช้ | ข้อความ |
apiRepository[] | ม | จัดเตรียมพื้นที่เก็บข้อมูล API ที่สมบูรณ์ซึ่งจะมีรายละเอียดเกี่ยวกับตำแหน่งข้อมูล API (วิธีการ, URL, ส่วนหัว และข้อมูล) ตัวยึดตำแหน่งที่ใช้ในตำแหน่งข้อมูล API พร้อมด้วยคำแนะนำในการตรวจสอบความถูกต้องซึ่ง LLM จะใช้ | ดูที่ 7 ที่เก็บ API |
สนาม | วัตถุประสงค์ |
---|---|
api_endpoints[] | อาร์เรย์ของจุดสิ้นสุด API ที่ระบุทั้งหมด |
provider | ระบุว่าผู้ให้บริการ LLM รายใดถูกใช้ |
runtime | เพื่อติดตามเวลาตอบสนองโดยรวม โปรดทราบว่าสิ่งนี้จะขึ้นอยู่กับเวลาตอบสนอง API ของ LLM |
// นำเข้าและเริ่มต้น AI-Dapter นำเข้า AIDapter จาก "ai-adapter";const ai = new AIDapter({ "ผู้ให้บริการ": "GoogleAI", "authentication": {"api_key": "<<คีย์ API ของคุณ>>" }});// กำหนดพื้นที่เก็บข้อมูล API จากตำแหน่งที่จะระบุ อัปเดต และส่งคืน API ที่เหมาะสม// โปรดสังเกตว่าตัวอย่างนี้ให้ตัวอย่างจุดสิ้นสุด API เพียงตัวอย่างเดียว แต่เนื่องจากนี่คืออาร์เรย์ คุณจึงควรคาดว่าจะจัดเตรียมหลายจุด จุดสิ้นสุด API ดังกล่าว.const apiRepository = [ {"api_info": { "title": "เวลาปัจจุบัน", "description": "ระบุพื้นที่และตำแหน่งเขตเวลาที่เหมาะสมสำหรับสถานที่ที่กำหนดและรับเวลา ณ ตำแหน่งนั้น"},"api_endpoint": { "method": "GET", "url": "http://worldtimeapi.org/api/timezone/|area_location|", "headers": {"Content-Type": "application/json" }},"placeholders": [ {"placeholder": "|area_location|"validation_criteria": "ตัวอย่างของ area_location คือ: America/New_York หรือ Europe/London พิจารณา area_location ที่เหมาะสมโดยพิจารณาจากตำแหน่งที่ถูกต้องที่ให้ไว้" ,"default": "อเมริกา/นิวยอร์ก" }] }];// นี่คืออินพุตคำถามของผู้ใช้ = "กี่โมงแล้วในมุมไบ"// ตอนนี้เรียกเมธอด getRealtimeSources() เพื่อรับ API endpointsai.getRealtimeSources(input, apiRepository) ที่ถูกต้อง .then((resp) => {console.log(resp);/* { "api_endpoints": [ { "api": { "method": "GET", "url": "https://worldtimeapi.org /api/timezone/Asia/Kolkata", "headers": { "Content-Type": "application/json" } }, "placeholders": [ { "placeholder": "[area_location]", "determined": true } ], "status": "OK" } ], "provider": "GoogleAI", "runtime": "2 วินาที" } */ }).catch((err) => console.log(JSON.stringify(err, null, 4)));
โปรดสังเกตว่าตามเมืองที่ผู้ใช้ระบุเป็น Mumbai นั้น LLM ได้กำหนดค่าที่เหมาะสมสำหรับตัวยึดตำแหน่ง area_location และส่งคืนจุดสิ้นสุด API ที่อัปเดต
AIDapter.getDataFromRealtimeSource(อินพุต: สตริง, apiRepository: Types.APIRepository[], dataConfig?: Types.DataConfig | ไม่ได้กำหนด): สัญญา<ไม่ทราบ>
ใช้วิธีนี้หากวัตถุประสงค์ของคุณคือการรับข้อมูลจากตำแหน่งข้อมูล API ที่เกี่ยวข้องตามคำถามของผู้ใช้
พารามิเตอร์ | บังคับ(M) / ทางเลือก(O) | วัตถุประสงค์ | ประเภทข้อมูล |
---|---|---|---|
input | ม | คำถามจากผู้ใช้ | ข้อความ |
apiRepository[] | ม | อาร์เรย์ของข้อมูล API, จุดสิ้นสุด (เมธอด, URL, ส่วนหัว และข้อมูล) และตัวยึดตำแหน่ง | ดูที่ 7 ที่เก็บ API |
dataConfig | โอ | พารามิเตอร์การกำหนดค่าเพื่อควบคุมข้อมูลที่ได้รับจากการเรียก API | ดู 5.2 การกำหนดค่าข้อมูล |
สนาม | วัตถุประสงค์ |
---|---|
api_results[] | อาร์เรย์ของการตอบกลับจากการเรียก API ทั้งหมด |
provider | ระบุว่าผู้ให้บริการ LLM รายใดถูกใช้ |
runtime | เพื่อติดตามเวลาตอบสนองโดยรวม โปรดทราบว่าสิ่งนี้จะขึ้นอยู่กับเวลาตอบสนอง API ของ LLM |
// นำเข้าและเริ่มต้น AI-Dapter นำเข้า AIDapter จาก "ai-adapter";const ai = new AIDapter({ "ผู้ให้บริการ": "GoogleAI", "authentication": {"api_key": "<<คีย์ API ของคุณ>>" }});// กำหนดพื้นที่เก็บข้อมูล API จากตำแหน่งที่จะระบุ อัปเดต และส่งคืน API ที่เหมาะสม// โปรดสังเกตว่าตัวอย่างนี้ให้ตัวอย่างจุดสิ้นสุด API เพียงตัวอย่างเดียว แต่เนื่องจากนี่คืออาร์เรย์ คุณจึงควรคาดว่าจะจัดเตรียมหลายจุด จุดสิ้นสุด API ดังกล่าว.const apiRepository = [ {"api_info": { "title": "เวลาปัจจุบัน", "description": "ระบุพื้นที่และตำแหน่งเขตเวลาที่เหมาะสมสำหรับสถานที่ที่กำหนดและรับเวลา ณ ตำแหน่งนั้น"},"api_endpoint": { "method": "GET", "url": "http://worldtimeapi.org/api/timezone/|area_location|", "headers": {"Content-Type": "application/json" }},"placeholders": [ {"placeholder": "|area_location|"validation_criteria": "ตัวอย่างของ area_location คือ: America/New_York หรือ Europe/London พิจารณา area_location ที่เหมาะสมโดยพิจารณาจากตำแหน่งที่ถูกต้องที่ให้ไว้" ,"default": "อเมริกา/นิวยอร์ก" }] }];// นี่คืออินพุตคำถามของผู้ใช้ = "กี่โมงแล้วในมุมไบ"// Data configurationlet dataConfig = { "max_records": 3 }// ตอนนี้ให้เรียกใช้เมธอด getDataFromRealtimeSource() เพื่อรับข้อมูลจากการเรียกสิ่งที่เกี่ยวข้องทั้งหมด ตำแหน่งข้อมูล API ตามผู้ใช้ questionai.getDataFromRealtimeSource(คำถาม, apiRepository, dataConfig) .then((resp) => {console.log(resp);/* { "api_results": [ { "api_sources": "worldtimeapi.org", "data": { "ตัวย่อ": "IST", "client_ip ": "50.126.214.61", "วันที่และเวลา": "2024-01-05T22:48:30.316887+05:30", "day_of_week": 5, "day_of_year": 5, "dst": เท็จ, "dst_from": null, "dst_offset": 0, "dst_until": null, "raw_offset": 19800, "เขตเวลา": "เอเชีย/โกลกาตา", "unixtime": 1704475110, "utc_datetime": "2024-01-05T17:18:30.316887+00:00", "utc_offset": "+05:30", "week_number": 1 } } ], "ผู้ให้บริการ": "GoogleAI", "รันไทม์": "4 วินาที" } */ }).catch((err) => console.log(JSON.stringify(err, null, 4)));
การตอบสนองจากการเรียก API ข้อมูลนี้สามารถนำไปใช้สำหรับการต่อสายดิน LLM
AIDapter.getLLMResponseFromRealtimeSources (อินพุต: สตริง, apiRepository: Types.APIRepository [], ตัวเลือก?: AIDapterOptions | ไม่ได้กำหนด): สัญญา <ไม่ทราบ>
ใช้วิธีนี้หากวัตถุประสงค์ของคุณคือการได้รับคำตอบ LLM ตามคำถามของผู้ใช้ ซึ่งรวมถึงการระบุตำแหน่งข้อมูล API ที่เกี่ยวข้อง การเรียก API ที่ระบุ และการใช้ข้อมูลนั้นในพรอมต์ LLM เพื่อรับการตอบกลับจาก LLM
คำแนะนำ: ใช้วิธีนี้เพื่อให้ได้รับความเร่งสูงสุดในกระบวนการพัฒนาแอปพลิเคชันของคุณ
พารามิเตอร์ | บังคับ(M) / ทางเลือก(O) | วัตถุประสงค์ | ประเภทข้อมูล |
---|---|---|---|
input | ม | คำถามจากผู้ใช้ | ข้อความ |
apiRepository[] | ม | อาร์เรย์ของข้อมูล API, จุดสิ้นสุด (เมธอด, URL, ส่วนหัว และข้อมูล) และตัวยึดตำแหน่ง | ดูที่ 7 ที่เก็บ API |
options | โอ | ตัวแทนและการกำหนดค่าข้อมูล | ดูที่ 5 ตัวเลือกการกำหนดค่าเอเจนต์และข้อมูล |
สนาม | วัตถุประสงค์ |
---|---|
ai_response | LLM สร้างการตอบสนอง |
ai_status | ช่วยตรวจสอบว่าการตอบสนองนั้นขึ้นอยู่กับความพร้อมใช้งานขององค์ประกอบข้อมูลที่จำเป็นทั้งหมดเพื่อให้สามารถเรียก API ได้สำเร็จหรือไม่ ค่าที่เป็นไปได้: ตกลง ติดตามผล หรือไม่สมบูรณ์ |
ai_context | ประกอบด้วยสรุปคำตอบสั้นๆ และรายการเอนทิตี แนวคิดเบื้องหลังฟิลด์นี้มีไว้สำหรับกรณีการใช้งานที่เกี่ยวข้องกับการสนทนาติดตามผล สามารถส่งออบเจ็กต์ทั้งหมดเป็น additional_content ภายในตัวเลือก dataConfig เมื่อต้องส่งคำถามติดตามผล |
provider | ระบุว่าผู้ให้บริการ LLM รายใดถูกใช้ |
runtime | เพื่อติดตามเวลาตอบสนองโดยรวม โปรดทราบว่าสิ่งนี้จะขึ้นอยู่กับเวลาตอบสนอง API ของ LLM |
// นำเข้าและเริ่มต้น AI-Dapter นำเข้า AIDapter จาก "ai-adapter";const ai = new AIDapter({ "ผู้ให้บริการ": "GoogleAI", "authentication": {"api_key": "<<คีย์ API ของคุณ>>" }});// กำหนดพื้นที่เก็บข้อมูล API จากตำแหน่งที่จะระบุ อัปเดต และส่งคืน API ที่เหมาะสม// โปรดสังเกตว่าตัวอย่างนี้มีตัวอย่างจุดสิ้นสุด API เพียงตัวอย่างเดียว แต่เนื่องจากนี่คืออาร์เรย์ คุณจึงควรคาดว่าจะจัดเตรียมหลายจุด จุดสิ้นสุด API ดังกล่าว.const apiRepository = [ {"api_info": { "title": "เวลาปัจจุบัน", "description": "ระบุพื้นที่และตำแหน่งเขตเวลาที่เหมาะสมสำหรับสถานที่ที่กำหนดและรับเวลา ณ ตำแหน่งนั้น"},"api_endpoint": { "method": "GET", "url": "http://worldtimeapi.org/api/timezone/|area_location|", "headers": {"ประเภทเนื้อหา": "application/json" }},"placeholders": [ {"placeholder": "|area_location|"validation_criteria": "ตัวอย่างของ area_location คือ: America/New_York หรือ Europe/London พิจารณา area_location ที่เหมาะสมโดยพิจารณาจากตำแหน่งที่ถูกต้องที่ให้ไว้" ,"default": "อเมริกา/นิวยอร์ก" }] }];// นี่คืออินพุตคำถามของผู้ใช้ = "กี่โมงแล้วในมุมไบ"// ตัวเลือก AI-Dapter ซึ่งมีตัวเลือกการกำหนดค่าเอเจนต์และการกำหนดค่าข้อมูลแบบรวม: AIDapterOptions = { "agentConfig": { "role": "นักแสดงตลกที่มักจะเล่าเรื่องตลกเกี่ยวกับคำถามของฉันเสมอ" }, "dataConfig": { "max_records": 7 }};// ตอนนี้เรียกเมธอด getLLMResponseFromRealtimeSources() เพื่อรับการตอบกลับ LLM สำหรับคำถามของผู้ใช้// การตอบสนองของ LLM ขึ้นอยู่กับพร้อมท์ที่ใช้ข้อมูลเรียลไทม์สำหรับการต่อสายดิน ai.getLLMResponseFromRealtimeSources (คำถาม, apiRepository, ตัวเลือก) .then((resp) => {console.log(resp);/* { "ai_response": "ในเมืองมุมไบที่มีชีวิตชีวา ที่ซึ่งความฝันของบอลลีวูดโบยบินและกลิ่นหอมของอาหารริมถนนอบอวลอยู่ในอากาศ ขณะนี้อยู่ที่ 22: 50 ในวันศุกร์ที่ 5 มกราคม 2024 อันแสนวิเศษนี้ ดังนั้น ไม่ว่าคุณจะจิบชาที่ Gateway of India หรือสนุกสนานไปกับจังหวะในคลับเต้นรำในท้องถิ่น จำไว้ว่า เวลา ไม่รอใคร แม้แต่ดาราบอลลีวูดที่ยิ่งใหญ่ที่สุด!", "ai_status": "ตกลง", "ai_context": { "คำถาม": "ที่มุมไบตอนนี้กี่โมงแล้ว", "เอนทิตี": [], "ข้อมูล": [ { "ตัวย่อ": "IST", "client_ip": "50.126.214.61", "datetime": "2024-01-05T22:50:51.261990+05:30", "day_of_week": 5, "day_of_year": 5, "dst": เท็จ, "dst_from": null, "dst_offset": 0, "dst_until": null, "raw_offset": 19800, "เขตเวลา": "เอเชีย/โกลกาตา", "unixtime": 1704475251, "utc_datetime": "2024-01-05T17:20:51.261990+00:00", "utc_offset": "+05:30", "week_number": 1 } ] , "แหล่งที่มา": [ "worldtimeapi.org" ] }, "ผู้ให้บริการ": "GoogleAI", "รันไทม์": "6 วินาที" } */ }).catch((err) => console.log(JSON.stringify(err, null, 4)));
โปรดสังเกตว่าคำถามของผู้ใช้จะถูกใช้ก่อนเพื่อระบุ API ที่เกี่ยวข้องจากที่เก็บ API ที่ให้มา เมธอดนี้ยังเรียก API ที่ระบุ รวบรวมการตอบสนองเพื่อต่อสายดินพร้อมท์ LLM สุดท้าย และส่งคืนการตอบกลับที่สร้างขึ้น
นอกจากนี้ โปรดทราบว่าการตอบกลับประกอบด้วยเนื้อหาที่สร้างโดย LLM ภายในฟิลด์ ai_response
และบริบทภายในฟิลด์ ai_context
คุณสามารถส่งบริบททั้งหมดเป็น dataConfig.additional_context
พร้อมกับคำถามติดตามผลได้
ตัวอย่างแสดงวิธีการส่งบริบทเพื่อเปิดใช้งานการสนทนาติดตามผล
// ดังที่แสดงในตัวอย่างก่อนหน้านี้ ai_context มีข้อมูลต่อไปนี้::// --------------------------------- --------------------------------------------// resp.ai_context: {// "คำถาม": "ที่มุมไบกี่โมงแล้ว วันที่ปัจจุบันในมุมไบคืออะไร" // "entities": [],// "data": [// {// "ตัวย่อ": "IST",// "client_ip": "50.126.214.61",// "datetime": "2024-01-05T22:50:51.261990+05:30",// "day_of_week": 5,// "day_of_year": 5,// "dst": false,// "dst_from": null,// "dst_offset": 0,// "dst_until": null,// "raw_offset": 19800,// "เขตเวลา": "เอเชีย/โกลกาตา",// "unixtime": 1704475251,// "utc_datetime": "2024-01-05T17:20:51.261990+00:00",// "utc_offset": "+05:30",// "week_number": 1// }// ],// "sources": [// "worldtimeapi.org"// ]// }// ---------------- -------------------------------------------------- -------------------------------------------------- -----------// ผนวกบริบทข้างต้นลงใน dataConfig.เพิ่มเติม_context ...if(options.dataConfig[เพิ่มเติม_context]){