Branch #01 docs/api/01-llm.md

03. LLM Chat & Embeddings

Branch #01 — Lõi giao tiếp AI cho toàn bộ hệ sinh thái.

Endpoints

POST
https://bizgpt.vn/wp-json/llm/router/v1/chat

Chat completion blocking

Auth: Bearer

POST
https://bizgpt.vn/wp-json/llm/router/v1/chat/stream

Chat SSE streaming

Auth: Bearer

POST
https://bizgpt.vn/wp-json/llm/router/v1/embeddings

Sinh vector embeddings

Auth: Bearer

GET
https://bizgpt.vn/wp-json/llm/router/v1/models

Danh sách model khả dụng

Auth: Bearer

GET
https://bizgpt.vn/wp-json/llm/router/v1/models/purposes

Purpose -> model mapping

Auth: Bearer

GET
https://bizgpt.vn/wp-json/llm/router/v1/health

Health check

Auth: Public

Method Path Auth Mô tả
POST https://bizgpt.vn/wp-json/llm/router/v1/chat Bearer Chat completion blocking
POST https://bizgpt.vn/wp-json/llm/router/v1/chat/stream Bearer Chat SSE streaming
POST https://bizgpt.vn/wp-json/llm/router/v1/embeddings Bearer Sinh vector embeddings
GET https://bizgpt.vn/wp-json/llm/router/v1/models Bearer Danh sách model khả dụng
GET https://bizgpt.vn/wp-json/llm/router/v1/models/purposes Bearer Purpose -> model mapping
GET https://bizgpt.vn/wp-json/llm/router/v1/health Public Health check

Query Examples

POST Chat completion blocking
curl -X POST "https://bizgpt.vn/wp-json/llm/router/v1/chat" -H "Authorization: Bearer biz-YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Xin chào"}]}'
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/chat', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Xin chào"}]}),
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/llm/router/v1/chat"
headers = {'Authorization': 'Bearer biz-YOUR_KEY', 'Content-Type': 'application/json'}
payload = '{"model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Xin chào"}]}'
res = requests.request("POST", url, headers=headers, data=payload)
print(res.json())
POST Chat SSE streaming
curl -X POST "https://bizgpt.vn/wp-json/llm/router/v1/chat/stream" -H "Authorization: Bearer biz-YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Xin chào"}]}'
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/chat/stream', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Xin chào"}]}),
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/llm/router/v1/chat/stream"
headers = {'Authorization': 'Bearer biz-YOUR_KEY', 'Content-Type': 'application/json'}
payload = '{"model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Xin chào"}]}'
res = requests.request("POST", url, headers=headers, data=payload)
print(res.json())
POST Sinh vector embeddings
curl -X POST "https://bizgpt.vn/wp-json/llm/router/v1/embeddings" -H "Authorization: Bearer biz-YOUR_KEY" -H "Content-Type: application/json" -d '{"sample":true}'
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/embeddings', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"sample":true}),
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/llm/router/v1/embeddings"
headers = {'Authorization': 'Bearer biz-YOUR_KEY', 'Content-Type': 'application/json'}
payload = '{"sample":true}'
res = requests.request("POST", url, headers=headers, data=payload)
print(res.json())
GET Danh sách model khả dụng
curl -X GET "https://bizgpt.vn/wp-json/llm/router/v1/models" -H "Authorization: Bearer biz-YOUR_KEY"
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/models', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
  },
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/llm/router/v1/models"
headers = {'Authorization': 'Bearer biz-YOUR_KEY'}
res = requests.get(url, headers=headers)
print(res.json())
GET Purpose -> model mapping
curl -X GET "https://bizgpt.vn/wp-json/llm/router/v1/models/purposes" -H "Authorization: Bearer biz-YOUR_KEY"
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/models/purposes', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
  },
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/llm/router/v1/models/purposes"
headers = {'Authorization': 'Bearer biz-YOUR_KEY'}
res = requests.get(url, headers=headers)
print(res.json())
GET Health check
curl -X GET "https://bizgpt.vn/wp-json/llm/router/v1/health"
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/health', {
  method: 'GET',
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/llm/router/v1/health"
headers = {}
res = requests.get(url, headers=headers)
print(res.json())

Use Cases

  • Chat assistant cho CSKH, sales, tư vấn nghiệp vụ nội bộ.
  • Sinh embedding cho semantic search và graph retrieval.
  • Điều phối model theo purpose để tối ưu tốc độ/cost/chất lượng.

Implementation Steps

  1. Xác thực API key và entitlement trước mỗi phiên làm việc.
  2. Gọi /chat hoặc /chat/stream cho conversational flow.
  3. Lưu usage/cost để theo dõi hiệu quả theo team hoặc chiến dịch.

Quick Start cURL

bash
curl -X POST https://bizgpt.vn/wp-json/llm/router/v1/chat -H "Authorization: Bearer biz-YOUR_KEY" -H "Content-Type: application/json" -d "{\"messages\":[{\"role\":\"user\",\"content\":\"Xin chào\"}],\"model\":\"anthropic/claude-3.5-sonnet\"}"

Lấy danh sách models (GET /models)

bash
curl -X GET https://bizgpt.vn/wp-json/llm/router/v1/models -H "Authorization: Bearer biz-YOUR_KEY"

Gọi models bằng JavaScript (fetch)

javascript
const res = await fetch('https://bizgpt.vn/wp-json/llm/router/v1/models', {
  headers: { Authorization: 'Bearer biz-YOUR_KEY' }
});
const data = await res.json();
console.log(data);

Gọi models bằng Python (requests)

python
import requests
res = requests.get('https://bizgpt.vn/wp-json/llm/router/v1/models', headers={'Authorization':'Bearer biz-YOUR_KEY'})
print(res.json())
Canonical Spec

docs/api/01-llm.md

Notes for Public Deployment
  • Nên bật stream cho UI chat để người dùng thấy phản hồi tức thì.