Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 3 — Thiết lập môi trường: ghép LLM vào stack RPA hiện có

Đã đọc 0/8 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Bạn không cần đập đi xây lại. Bài này hướng dẫn dựng "lớp trí tuệ" đặt cạnh RPA đang chạy, với kiến trúc dễ rollback.

Kiến trúc mục tiêu

Ý tưởng: RPA gọi ra một service LLM riêng qua HTTP. RPA vẫn là orchestrator (điều phối), LLM là một "tool" trả về kết quả có cấu trúc. Tách rời giúp bạn thay model, tắt/bật, và audit dễ dàng.

[RPA bot] --HTTP--> [LLM service /extract] --> [LLM API]
   |                      |
   |                      └── log input/output (audit)
   └── nhận JSON kết quả, chạy tiếp quy tắc cũ

Các bước thiết lập

  • Tạo API key và giới hạn ngân sách: đăng ký provider LLM, tạo key riêng cho dự án, đặt spending limit để tránh sự cố token.
  • Dựng một service trung gian (Python FastAPI là đủ). Đây là nơi bạn kiểm soát prompt, retry, và schema output.
  • Buộc output có cấu trúc: yêu cầu LLM trả JSON đúng schema, để RPA parse được chắc chắn.
  • Thêm logging: lưu input/output mỗi lần gọi để audit và debug.
  • Kết nối từ RPA: dùng activity HTTP Request (UiPath), connector HTTP (Power Automate) hoặc REST call trỏ vào service.

Code service trung gian tối giản

from fastapi import FastAPI
from pydantic import BaseModel
import json, os
# from openai import OpenAI   # hoặc client provider của bạn

app = FastAPI()

class ExtractReq(BaseModel):
    text: str

@app.post("/extract")
def extract(req: ExtractReq):
    prompt = f"""Trích xuất từ văn bản sau và CHỈ trả JSON:
{{"so_tien": number|null, "ly_do": string|null, "khan": boolean}}
Văn bản: {req.text}"""
    raw = call_llm(prompt)          # gọi LLM, temperature=0
    try:
        data = json.loads(raw)
    except Exception:
        data = {"error": "parse_fail", "raw": raw}
    log(req.text, data)             # ghi audit
    return data

Đặt temperature=0 để kết quả ổn định nhất có thể cho tác vụ trích xuất.

Gọi từ RPA (pseudocode UiPath)

emailText = ReadEmailBody()
response = HTTPRequest(POST, "http://llm-svc/extract", body={text: emailText})
data = DeserializeJSON(response)
IF data.so_tien != null AND data.so_tien < 500000
    ApproveRefund(data)          // quy tắc RPA CŨ, giữ nguyên
ELSE
    RouteToHuman(emailText, data)

Khung cấu hình cần chuẩn hóa

llm:
  provider: your-provider
  model: <model-name>
  temperature: 0
  timeout_s: 20
  max_retries: 2
  budget_alert_usd: 50
safety:
  log_io: true
  pii_masking: true
  fallback_to_human: true

Checklist thiết lập an toàn

  • [ ] API key lưu trong secret store, KHÔNG hardcode trong workflow
  • [ ] Có spending limit ở phía provider
  • [ ] Output ép về JSON schema, có nhánh xử lý khi parse fail
  • [ ] Log đầy đủ input/output (có che PII)
  • [ ] Có feature flag để tắt LLM, rơi về luồng cũ
  • [ ] Timeout + retry cấu hình rõ ràng

Sai lầm thường gặp

  • Hardcode API key trong workflow RPA: rò rỉ khi export/chia sẻ file. Luôn dùng credential store.
  • Gọi thẳng LLM API từ trong bot RPA: khó thay model, khó log tập trung, khó rollback. Luôn qua service trung gian.
  • Không xử lý khi LLM trả sai JSON: LLM đôi khi thêm chữ thừa; phải có nhánh parse fail và fallback.
  • Không đặt timeout: LLM chậm/treo sẽ làm nghẽn cả dây chuyền RPA.
  • Quên spending limit: một vòng lặp lỗi có thể gọi API hàng nghìn lần trong đêm.
Bài 4 sẽ đi vào bước xây dựng đầu tiên: dùng LLM làm bước trích xuất/phân loại cho input phi cấu trúc.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi