LangGraph ialah rangka kerja orkestrasi aliran kerja yang direka khusus untuk aplikasi LLM. Prinsip terasnya ialah:
Fikirkan membeli-belah: Semak imbas → Tambah ke Troli → Daftar Keluar → Pembayaran. LangGraph membantu kami mengurus aliran kerja sedemikian dengan cekap.
Negeri adalah seperti pusat pemeriksaan dalam pelaksanaan tugas anda:
from typing import TypedDict, List class ShoppingState(TypedDict): # Current state current_step: str # Cart items cart_items: List[str] # Total amount total_amount: float # User input user_input: str class ShoppingGraph(StateGraph): def __init__(self): super().__init__() # Define states self.add_node("browse", self.browse_products) self.add_node("add_to_cart", self.add_to_cart) self.add_node("checkout", self.checkout) self.add_node("payment", self.payment)
Peralihan negeri menentukan "peta jalan" aliran tugas anda:
class ShoppingController: def define_transitions(self): # Add transition rules self.graph.add_edge("browse", "add_to_cart") self.graph.add_edge("add_to_cart", "browse") self.graph.add_edge("add_to_cart", "checkout") self.graph.add_edge("checkout", "payment") def should_move_to_cart(self, state: ShoppingState) -> bool: """Determine if we should transition to cart state""" return "add to cart" in state["user_input"].lower()
Untuk memastikan kebolehpercayaan sistem, kami perlu mengekalkan maklumat keadaan:
class StateManager: def __init__(self): self.redis_client = redis.Redis() def save_state(self, session_id: str, state: dict): """Save state to Redis""" self.redis_client.set( f"shopping_state:{session_id}", json.dumps(state), ex=3600 # 1 hour expiration ) def load_state(self, session_id: str) -> dict: """Load state from Redis""" state_data = self.redis_client.get(f"shopping_state:{session_id}") return json.loads(state_data) if state_data else None
Sebarang langkah boleh gagal, dan kita perlu menangani situasi ini dengan baik:
class ErrorHandler: def __init__(self): self.max_retries = 3 async def with_retry(self, func, state: dict): """Function execution with retry mechanism""" retries = 0 while retries < self.max_retries: try: return await func(state) except Exception as e: retries += 1 if retries == self.max_retries: return self.handle_final_error(e, state) await self.handle_retry(e, state, retries) def handle_final_error(self, error, state: dict): """Handle final error""" # Save error state state["error"] = str(error) # Rollback to last stable state return self.rollback_to_last_stable_state(state)
Mari kita lihat contoh praktikal - sistem perkhidmatan pelanggan yang bijak:
from langgraph.graph import StateGraph, State class CustomerServiceState(TypedDict): conversation_history: List[str] current_intent: str user_info: dict resolved: bool class CustomerServiceGraph(StateGraph): def __init__(self): super().__init__() # Initialize states self.add_node("greeting", self.greet_customer) self.add_node("understand_intent", self.analyze_intent) self.add_node("handle_query", self.process_query) self.add_node("confirm_resolution", self.check_resolution) async def greet_customer(self, state: State): """Greet customer""" response = await self.llm.generate( prompt=f""" Conversation history: {state['conversation_history']} Task: Generate appropriate greeting Requirements: 1. Maintain professional friendliness 2. Acknowledge returning customers 3. Ask how to help """ ) state['conversation_history'].append(f"Assistant: {response}") return state async def analyze_intent(self, state: State): """Understand user intent""" response = await self.llm.generate( prompt=f""" Conversation history: {state['conversation_history']} Task: Analyze user intent Output format: {{ "intent": "refund/inquiry/complaint/other", "confidence": 0.95, "details": "specific description" }} """ ) state['current_intent'] = json.loads(response) return state
# Initialize system graph = CustomerServiceGraph() state_manager = StateManager() error_handler = ErrorHandler() async def handle_customer_query(user_id: str, message: str): # Load or create state state = state_manager.load_state(user_id) or { "conversation_history": [], "current_intent": None, "user_info": {}, "resolved": False } # Add user message state["conversation_history"].append(f"User: {message}") # Execute state machine flow try: result = await graph.run(state) # Save state state_manager.save_state(user_id, result) return result["conversation_history"][-1] except Exception as e: return await error_handler.with_retry( graph.run, state )
Prinsip Reka Bentuk Negeri
Pengoptimuman Logik Peralihan
Strategi Pengendalian Ralat
Pengoptimuman Prestasi
Letupan Negeri
Situasi Kebuntuan
Ketekalan Negeri
Mesin keadaan LangGraph menyediakan penyelesaian yang berkuasa untuk menguruskan aliran tugas Ejen AI yang kompleks:
Atas ialah kandungan terperinci Mesin Negeri LangGraph: Mengurus Aliran Tugas Ejen Kompleks dalam Pengeluaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!