blog.dopana

Back

LLM Engineering là kỹ năng xây dựng ứng dụng trên nền tảng mô hình ngôn ngữ lớn. Không chỉ gọi API — mà là thiết kế hệ thống AI đáng tin cậy.

Kiến Trúc Ứng Dụng LLM#

User → Orchestrator → LLM API

                  Tools / RAG / Memory

                    Response
plaintext

Prompt Engineering#

System Prompt#

Structured Output#

RAG — Retrieval-Augmented Generation#

Kết hợp knowledge base với LLM — giải quyết hallucination, cập nhật kiến thức không cần retrain.

Flow#

User Query → Embedding → Vector DB Search → Top-K Chunks → LLM → Answer

                                                              Với context
plaintext

Implementation#

Chunking Strategy#

// RecursiveCharacterTextSplitter
import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter';

const splitter = new RecursiveCharacterTextSplitter({
  chunkSize: 1000,
  chunkOverlap: 200,
  separators: ['\n## ', '\n### ', '\n\n', '\n', '. ', ' '],
});

const chunks = await splitter.createDocuments([document]);
typescript

Fine-tuning — Huấn Luyện Riêng#

Khi RAG không đủ — cần huấn luyện model trên dữ liệu riêng.

Khi Nào Cần Fine-tune?#

  • Style/Tone — model cần nói theo giọng riêng
  • Domain knowledge — codebase, thuật ngữ nội bộ
  • Format specific — output phải đúng format riêng
  • Reduce cost/latency — dùng model nhỏ hơn nhưng fine-tuned

Dataset Format#

[
  {
    "messages": [
      { "role": "system", "content": "You are a code reviewer." },
      { "role": "user", "content": "Review: function add(a,b){return a+b}" },
      { "role": "assistant", "content": "**Score**: 8/10\n**Issues**: Missing TypeScript types, no input validation." }
    ]
  }
]
json

OpenAI Fine-tuning#

# Prepare data
openai tools fine_tunes.prepare_data -f data.jsonl

# Fine-tune
curl -X POST https://api.openai.com/v1/fine_tuning/jobs \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o-mini",
    "training_file": "file-abc123"
  }'
bash

Evaluation — Đo Chất Lượng#

Không có metric tự nhiên như accuracy — cần đánh giá thủ công hoặc dùng LLM-as-judge:

Safety & Guardrails#

// Input guard
function validateInput(input: string): boolean {
  const blocked = ['ignore previous instructions', 'system prompt', ...];
  return !blocked.some(b => input.toLowerCase().includes(b));
}

// Output guard
function validateOutput(output: string): boolean {
  if (output.includes('I cannot') && output.length < 50) {
    return false; // Refusal detected
  }
  return true;
}
typescript

Production Checklist#

  • Prompt versioning (lưu prompt trong Git)
  • Caching responses giống nhau
  • Rate limiting + cost tracking
  • Fallback model (gpt-4o → gpt-4o-mini → cache)
  • Streaming response (UX tốt hơn)
  • Logging prompt + response + latency
  • A/B testing prompt
  • Monitoring hallucination rate
  • RAG chunk quality evaluation

Tools & Framework#

ToolPurpose
LangChainFramework cho LLM app
LlamaIndexRAG framework
Pinecone / WeaviateVector database
Guardrails AIOutput validation
LangFuse / Weights & BiasesLLM observability
OllamaLocal LLM

Kết Luận#

LLM Engineering không chỉ là gọi API. Prompt engineering là kỹ năng cơ bản. RAG cho knowledge base. Fine-tuning cho domain cụ thể. Evaluation là chìa khóa — không có metric, không biết mình đang làm tốt hay không. Bắt đầu với prompt + RAG, fine-tune khi cần.

Tài liệu tham khảo#