ai

LangChain Agent Automation Script — วิธีสร้าง AI

LangChain Agent Automation Script — วิธีสร้าง AI

LangChain Agent

LangChain Agent Automation Script — วิธีสร้าง AI

LangChain Agent ใช้ LLM ตัดสินใจเลือก Tools และ Actions อัตโนมัติ วิเคราะห์คำถาม เลือก Tool เรียกใช้ ดูผลลัพธ์ ตัดสินใจขั้นตอนถัดไปจนได้คำตอบ

เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: SQLite Litestream Observability Stack — ระบบ

Automation Scripts ใช้ Agent ทำงานซ้ำๆอัตโนมัติ เช่น Data Collection, Report Generation, System Monitoring, Customer Support

เนื้อหาเกี่ยวข้อง — Ollama Local LLM Citizen Developer

LangChain Agent Setup

# === LangChain Agent Setup ===
# pip install langchain langchain-openai langchain-community

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import tool
from langchain import hub
from typing import Optional
import json

# 1. สร้าง Custom Tools
@tool
def search_database(query: str) -> str:
    """ค้นหาข้อมูลในฐานข้อมูล ใช้เมื่อต้องการข้อมูลสินค้า ลูกค้า หรือ Orders"""
    # Simulated database search
    data = {
        "products": {"count": 1500, "categories": 12},
        "customers": {"count": 25000, "active": 18000},
        "orders": {"today": 150, "total": 500000},
    }
    for key, value in data.items():
        if key in query.lower():
            return json.dumps(value, indent=2)
    return "ไม่พบข้อมูลที่ค้นหา"

@tool
def calculate(expression: str) -> str:
    """คำนวณ Math expression เช่น '2+2', '100*0.15', 'sqrt(144)'"""
    try:
        import math
        allowed = {"sqrt": math.sqrt, "pow": pow, "abs": abs,
                   "round": round, "min": min, "max": max}
        result = eval(expression, {"__builtins__": {}}, allowed)
        return str(result)
    except Exception as e:
        return f"Error: {e}"

@tool
def get_system_status(service: str) -> str:
    """ตรวจสอบสถานะระบบ ใช้เมื่อต้องการรู้ว่า service ทำงานปกติหรือไม่"""
    statuses = {
        "api": {"status": "healthy", "uptime": "99.9%", "latency": "45ms"},
        "database": {"status": "healthy", "connections": 42, "cpu": "35%"},
        "cache": {"status": "healthy", "hit_rate": "94%", "memory": "2.1GB"},
        "queue": {"status": "warning", "pending": 1500, "consumers": 3},
    }
    if service.lower() in statuses:
        return json.dumps(statuses[service.lower()], indent=2)
    return f"Service '{service}' not found. Available: {list(statuses.keys())}"

@tool
def send_notification(message: str) -> str:
    """ส่ง Notification ไปยังทีม ใช้เมื่อต้องแจ้งเตือนเรื่องสำคัญ"""
    print(f"  [Notification] {message}")
    return f"Notification sent: {message}"

# 2. สร้าง Agent
# llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# tools = [search_database, calculate, get_system_status, send_notification]
# prompt = hub.pull("hwchase17/react")
# agent = create_react_agent(llm, tools, prompt)
# agent_executor = AgentExecutor(
#     agent=agent, tools=tools,
#     verbose=True, max_iterations=5,
#     handle_parsing_errors=True,
# )

# 3. รัน Agent
# result = agent_executor.invoke({
#     "input": "ตรวจสอบสถานะ queue ถ้ามี pending มากกว่า 1000 ให้แจ้งทีม"
# })
# print(result["output"])

print("LangChain Agent Setup:")
print("  Tools: search_database, calculate, get_system_status, send_notification")
print("  Agent: ReAct Pattern")
print("  LLM: GPT-4o-mini")
print("  Max Iterations: 5")

Automation Scripts

LangChain Agent Automation Script — วิธีสร้าง AI
# automation_scripts.py — LangChain Agent Automation
from dataclasses import dataclass, field
from typing import List, Dict, Callable
from datetime import datetime
import json

@dataclass
class AutomationTask:
    name: str
    description: str
    schedule: str  # cron expression
    prompt_template: str
    tools_required: List[str]
    last_run: str = ""
    status: str = "pending"

class AutomationEngine:
    """LangChain Agent Automation Engine"""

    def __init__(self):
        self.tasks: List[AutomationTask] = []
        self.execution_log: List[Dict] = []

    def register_task(self, task: AutomationTask):
        self.tasks.append(task)

    def execute_task(self, task: AutomationTask):
        """Execute Automation Task"""
        print(f"\n  Executing: {task.name}")
        print(f"    Description: {task.description}")
        print(f"    Tools: {', '.join(task.tools_required)}")

        # Agent execution simulation
        # result = agent_executor.invoke({"input": task.prompt_template})

        task.last_run = datetime.now().isoformat()
        task.status = "completed"

        self.execution_log.append({
            "task": task.name,
            "timestamp": task.last_run,
            "status": "success",
        })

        print(f"    Status: {task.status}")
        print(f"    Time: {task.last_run}")

    def run_all(self):
        """Run All Automation Tasks"""
        print(f"\n{'='*55}")
        print(f"Automation Engine — {datetime.now().strftime('%Y-%m-%d %H:%M')}")
        print(f"{'='*55}")
        print(f"  Tasks: {len(self.tasks)}")

        for task in self.tasks:
            self.execute_task(task)

        print(f"\n  Summary: {len(self.execution_log)} tasks executed")

    def dashboard(self):
        """Automation Dashboard"""
        print(f"\n  Registered Tasks:")
        for task in self.tasks:
            print(f"    [{task.status:>9}] {task.name}")
            print(f"              Schedule: {task.schedule}")
            if task.last_run:
                print(f"              Last Run: {task.last_run}")

# สร้าง Automation Tasks
engine = AutomationEngine()

tasks = [
    AutomationTask(
        "Daily System Health Check",
        "ตรวจสอบสถานะทุก Service แจ้งเตือนถ้ามีปัญหา",
        "0 8 * * *",
        "ตรวจสอบสถานะ api, database, cache, queue ถ้ามี service ไหนไม่ healthy ให้แจ้งทีม",
        ["get_system_status", "send_notification"],
    ),
    AutomationTask(
        "Sales Report Generation",
        "สร้าง Daily Sales Report จาก Database",
        "0 9 * * *",
        "ดึงข้อมูล orders วันนี้ คำนวณยอดรวม สร้าง Summary Report",
        ["search_database", "calculate"],
    ),
    AutomationTask(
        "Customer Inquiry Response",
        "ตอบคำถามลูกค้าอัตโนมัติจาก Queue",
        "*/15 * * * *",
        "ตรวจสอบ queue ถ้ามี pending inquiries ให้ตอบตาม Knowledge Base",
        ["search_database", "get_system_status"],
    ),
    AutomationTask(
        "Data Quality Check",
        "ตรวจสอบคุณภาพข้อมูลใน Database",
        "0 6 * * *",
        "ค้นหา products ที่ไม่มี description, ลูกค้าที่ email ไม่ถูกต้อง แจ้งทีม Data",
        ["search_database", "send_notification"],
    ),
]

for task in tasks:
    engine.register_task(task)

engine.run_all()
engine.dashboard()

Advanced Agent Patterns

# advanced_agents.py — Advanced LangChain Agent Patterns
from dataclasses import dataclass, field
from typing import List, Dict, Optional
from enum import Enum

class AgentType(Enum):
    REACT = "ReAct"
    PLAN_AND_EXECUTE = "Plan and Execute"
    MULTI_AGENT = "Multi-Agent"
    TOOL_CALLING = "Tool Calling"

@dataclass
class AgentConfig:
    name: str
    agent_type: AgentType
    llm_model: str
    tools: List[str]
    memory_type: str = "buffer"  # buffer, summary, vector
    max_iterations: int = 10
    temperature: float = 0

class AgentPatterns:
    """Advanced Agent Design Patterns"""

    def __init__(self):
        self.patterns: Dict[str, AgentConfig] = {}

    def register(self, config: AgentConfig):
        self.patterns[config.name] = config

    def show_patterns(self):
        """แสดง Agent Patterns"""
        print(f"\n{'='*55}")
        print(f"LangChain Agent Patterns")
        print(f"{'='*55}")

        for name, config in self.patterns.items():
            print(f"\n  [{config.agent_type.value}] {name}")
            print(f"    LLM: {config.llm_model}")
            print(f"    Tools: {', '.join(config.tools)}")
            print(f"    Memory: {config.memory_type}")
            print(f"    Max Iterations: {config.max_iterations}")

# LangGraph Multi-Agent Example
# from langgraph.graph import StateGraph, MessagesState
#
# def researcher(state: MessagesState):
#     """Research Agent — ค้นหาข้อมูล"""
#     messages = state["messages"]
#     # Use search tools
#     return {"messages": messages + [research_result]}
#
# def analyzer(state: MessagesState):
#     """Analyzer Agent — วิเคราะห์ข้อมูล"""
#     messages = state["messages"]
#     # Analyze data
#     return {"messages": messages + [analysis_result]}
#
# def writer(state: MessagesState):
#     """Writer Agent — เขียน Report"""
#     messages = state["messages"]
#     # Write report
#     return {"messages": messages + [report]}
#
# # สร้าง Graph
# graph = StateGraph(MessagesState)
# graph.add_node("researcher", researcher)
# graph.add_node("analyzer", analyzer)
# graph.add_node("writer", writer)
# graph.add_edge("researcher", "analyzer")
# graph.add_edge("analyzer", "writer")
# graph.set_entry_point("researcher")
# graph.set_finish_point("writer")
# app = graph.compile()

patterns = AgentPatterns()

configs = [
    AgentConfig("Simple Q&A Agent", AgentType.REACT,
                "gpt-4o-mini", ["search", "calculator"], "buffer", 5),
    AgentConfig("Research Assistant", AgentType.PLAN_AND_EXECUTE,
                "gpt-4o", ["search", "web_scraper", "summarizer"], "summary", 15),
    AgentConfig("DevOps Automation", AgentType.TOOL_CALLING,
                "gpt-4o-mini", ["system_status", "deploy", "notification"], "buffer", 10),
    AgentConfig("Multi-Agent Pipeline", AgentType.MULTI_AGENT,
                "gpt-4o", ["researcher", "analyzer", "writer"], "vector", 20),
]

for config in configs:
    patterns.register(config)

patterns.show_patterns()

# Memory Types
memory_comparison = {
    "ConversationBufferMemory": "เก็บทุก Message ง่าย ใช้ Token มาก",
    "ConversationSummaryMemory": "สรุป Conversation ประหยัด Token",
    "ConversationBufferWindowMemory": "เก็บ N Messages ล่าสุด",
    "VectorStoreRetrieverMemory": "ค้นหา Relevant Memory ด้วย Similarity",
}

print(f"\n  Memory Types:")
for mem_type, desc in memory_comparison.items():
    print(f"    {mem_type}: {desc}")

Best Practices

  • Tool Description: เขียน Description ให้ชัดเจน Agent จะเลือก Tool ตาม Description
  • Max Iterations: ตั้ง max_iterations ป้องกัน Agent วนไม่รู้จบ
  • Error Handling: ใช้ handle_parsing_errors=True จัดการ Output ผิดรูปแบบ
  • Temperature 0: ใช้ temperature=0 สำหรับ Agent ให้ผลลัพธ์สม่ำเสมอ
  • Structured Output: ใช้ Tool Calling Agent แทน ReAct สำหรับ Production
  • Logging: Log ทุก Step ของ Agent สำหรับ Debugging

LangChain Agent คืออะไร

AI ใช้ LLM ตัดสินใจเลือก Tools Actions อัตโนมัติ วิเคราะห์คำถาม เลือก Tool เรียกใช้ ดูผลลัพธ์ ตัดสินใจขั้นตอนถัดไปจนได้คำตอบสุดท้าย

แนะนำเพิ่มเติม — บทวิเคราะห์จาก XM Signal

เนื้อหาเกี่ยวข้อง — แนะนำให้อ่าน price structure — ข้อมูลครบถ้วน 2026

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง