Semantic Router เป็นเลเยอร์การตัดสินใจที่รวดเร็วสำหรับ LLM และตัวแทนของคุณ แทนที่จะรอให้คนรุ่น LLM ช้าเพื่อทำการตัดสินใจใช้เครื่องมือเราใช้เวทมนตร์ของพื้นที่เวกเตอร์ความหมายเพื่อทำการตัดสินใจเหล่านั้น- การกำหนดเส้นทาง คำขอของเราโดยใช้ความหมาย ทางความหมาย
เพื่อเริ่มต้นด้วย ความหมายเราเตอร์ เราติดตั้งอย่างนั้น:
pip install -qU semantic-router
❗ หากต้องการใช้เราเตอร์ Semantic เวอร์ชันท้องถิ่นเต็มรูปแบบคุณสามารถใช้ HuggingFaceEncoder และ LlamaCppLLM ( pip install -qU "semantic-router[local]" ดูที่นี่) ในการใช้ HybridRouteLayer คุณต้อง pip install -qU "semantic-router[hybrid]"
เราเริ่มต้นด้วยการกำหนดชุดของวัตถุ Route นี่คือเส้นทางการตัดสินใจที่เราเตอร์ semantic สามารถตัดสินใจใช้ได้ลองสองเส้นทางง่ายๆในตอนนี้ - หนึ่งสำหรับการพูดคุยเกี่ยวกับ การเมือง และอีกเส้นทางหนึ่งสำหรับ Chitchat :
from semantic_router import Route
# we could use this as a guide for our chatbot to avoid political conversations
politics = Route (
name = "politics" ,
utterances = [
"isn't politics the best thing ever" ,
"why don't you tell me about your political opinions" ,
"don't you just love the president" ,
"they're going to destroy this country!" ,
"they will save the country!" ,
],
)
# this could be used as an indicator to our chatbot to switch to a more
# conversational prompt
chitchat = Route (
name = "chitchat" ,
utterances = [
"how's the weather today?" ,
"how are things going?" ,
"lovely weather today" ,
"the weather is horrendous" ,
"let's go to the chippy" ,
],
)
# we place both of our decisions together into single list
routes = [ politics , chitchat ] เรามีเส้นทางของเราพร้อมตอนนี้เราเริ่มต้นโมเดลการฝัง / ตัวเข้ารหัส ขณะนี้เราสนับสนุน CohereEncoder และ OpenAIEncoder - จะเพิ่มการเข้ารหัสเพิ่มเติมในไม่ช้า เพื่อเริ่มต้นพวกเขาเราทำ:
import os
from semantic_router . encoders import CohereEncoder , OpenAIEncoder
# for Cohere
os . environ [ "COHERE_API_KEY" ] = "<YOUR_API_KEY>"
encoder = CohereEncoder ()
# or for OpenAI
os . environ [ "OPENAI_API_KEY" ] = "<YOUR_API_KEY>"
encoder = OpenAIEncoder () ด้วย routes และ encoder ของเราที่กำหนดไว้ตอนนี้เราสร้าง RouteLayer เลเยอร์เส้นทางจัดการกับการตัดสินใจเชิงความหมายของเรา
from semantic_router . layer import RouteLayer
rl = RouteLayer ( encoder = encoder , routes = routes )ตอนนี้เราสามารถใช้เลเยอร์เส้นทางของเราเพื่อทำการตัดสินใจอย่างรวดเร็วตามแบบสอบถามของผู้ใช้ ลองด้วยการสืบค้นสองแบบที่ควรกระตุ้นการตัดสินใจเส้นทางของเรา:
rl ( "don't you love politics?" ). name [Out]: 'politics'
การตัดสินใจที่ถูกต้องลองอีกครั้ง:
rl ( "how's the weather today?" ). name [Out]: 'chitchat'
เราได้รับการตัดสินใจทั้งสองอย่างถูกต้อง! ตอนนี้ให้ลองส่งแบบสอบถามที่ไม่เกี่ยวข้อง:
rl ( "I'm interested in learning about llama 2" ). name [Out]:
ในกรณีนี้ไม่สามารถตัดสินใจได้เนื่องจากเราไม่มีการแข่งขัน - ดังนั้นเลเยอร์เส้นทางของเรา None !
ตัวเข้ารหัส ของเราเตอร์ semantic รวมถึงการผสมผสานที่ใช้งานง่ายกับ Cohere, Openai, Hugging Face, Saditembed และอื่น ๆ-เรายังรองรับ Multi-Modality!
พื้นที่เวกเตอร์คำพูดของเรายังรวมเข้ากับ pinecone และ qdrant!
| สมุดบันทึก | คำอธิบาย |
|---|---|
| การแนะนำ | ความรู้เบื้องต้นเกี่ยวกับเราเตอร์ความหมายและเส้นทางคงที่ |
| เส้นทางไดนามิก | เส้นทางไดนามิกสำหรับการสร้างพารามิเตอร์และการเรียกใช้ฟังก์ชัน |
| บันทึก/โหลดเลเยอร์ | วิธีบันทึกและโหลด RouteLayer จากไฟล์ |
| การรวม Langchain | วิธีการรวมเราเตอร์ความหมายกับตัวแทน Langchain |
| การดำเนินการในท้องถิ่น | เราเตอร์ความหมายในท้องถิ่นอย่างเต็มที่พร้อมเส้นทางไดนามิก- โมเดลท้องถิ่นเช่น Mistral 7B มีประสิทธิภาพสูงกว่า GPT-3.5 ในการทดสอบส่วนใหญ่ |
| การเพิ่มประสิทธิภาพเส้นทาง | วิธีฝึกอบรมเกณฑ์เลเยอร์เส้นทางเพื่อเพิ่มประสิทธิภาพประสิทธิภาพ |
| เส้นทางหลายรูปแบบ | การใช้เส้นทางหลายรูปแบบเพื่อระบุรูปภาพ Shrek vs. Not-Shrek |

ollama / gemma2:9b