Chuyển đến nội dung chính

LiteLLM: Hướng dẫn kèm ví dụ thực tiễn

Tìm hiểu LiteLLM là gì và cách dùng để gọi API hợp nhất tới nhiều nhà cung cấp LLM, bao gồm API cơ bản, xử lý lỗi, dự phòng, streaming, đầu ra có cấu trúc và theo dõi chi phí.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Việc chuyển đổi giữa các nhà cung cấp LLM khác nhau không nên đòi hỏi bạn phải viết lại toàn bộ codebase. Nhưng đó lại là điều đang xảy ra khi bạn làm việc với nhiều dịch vụ AI hiện nay. Mỗi nhà cung cấp có SDK, phương thức xác thực và định dạng phản hồi riêng. LiteLLM giải quyết điều này bằng một giao diện hợp nhất.

Trong hướng dẫn này, tôi sẽ giải thích các phần chính của LiteLLM và cho bạn thấy cách bắt đầu với các cuộc gọi API cơ bản, rồi tiến tới phản hồi dạng streaming, đầu ra có cấu trúc và theo dõi chi phí.

LiteLLM là gì?

LiteLLM là một thư viện Python mã nguồn mở hoạt động như “bộ phiên dịch” dùng chung cho các mô hình AI. Thay vì phải học nhiều API khác nhau cho từng nhà cung cấp, bạn dùng một giao diện duy nhất có thể kết nối tới hơn 100 dịch vụ LLM.

Framework có hai phần chính. SDK Python cho phép bạn viết code một lần và chạy với bất kỳ nhà cung cấp nào. Proxy server đóng vai trò cổng trung tâm cho đội nhóm và doanh nghiệp cần quản lý dịch vụ AI ở quy mô lớn.

LiteLLM còn mang lại các lợi ích sau:

  • Theo dõi chi phí tích hợp: Xem tổng chi tiêu trên tất cả nhà cung cấp trong một bảng điều khiển thay vì phải kiểm tra nhiều hệ thống thanh toán
  • Chuyển sang dự phòng tự động: Khi một nhà cung cấp gặp sự cố hoặc chạm giới hạn tốc độ, LiteLLM sẽ tự động thử các phương án dự phòng
  • Tùy chọn tự triển khai: Chạy mọi thứ trên máy chủ của bạn nếu bạn cần bảo mật dữ liệu hoặc tuân thủ quy định

Lưu ý rằng OpenRouter cũng cung cấp quyền truy cập hợp nhất tới nhiều LLM, dù có mức giá và bộ tính năng khác nhau.

Proxy server bổ sung hạn mức chi tiêu theo đội, theo dõi mức sử dụng theo dự án và quản lý khóa API tập trung. Tất cả cấu hình được thực hiện qua các tệp YAML đơn giản.

LiteLLM phù hợp với nhiều nhóm người dùng:

  • Lập trình viên cá nhân muốn thử nhiều mô hình mà không phải tạo tài khoản ở khắp nơi
  • Nhóm nhỏ cần minh bạch chi phí và không muốn bị khóa nhà cung cấp
  • Doanh nghiệp lớn cần quản trị tập trung, kiểm soát ngân sách và phân tích sử dụng chi tiết

Thư viện sử dụng giấy phép MIT và hoàn toàn mã nguồn mở. Bạn có thể xem mã nguồn, sửa đổi theo nhu cầu, hoặc đóng góp lại cho dự án.

Giờ khi bạn đã biết LiteLLM có thể làm gì, dưới đây là cách thiết lập môi trường.

Yêu cầu tiên quyết

Trước khi bắt đầu dùng LiteLLM, bạn cần chuẩn bị vài thứ. Phần lớn có lẽ bạn đã có nếu từng làm việc với các mô hình AI trước đây.

Môi trường Python

Bạn cần Python 3.7 hoặc mới hơn. Hầu hết hệ thống hiện nay đều có, nhưng bạn có thể kiểm tra phiên bản bằng:

import sys
print(f"Python version: {sys.version_info.major}.{sys.version_info.minor}")

Cài đặt gói

Cài LiteLLM và python-dotenv để quản lý biến môi trường:

uv add litellm python-dotenv
# or with pip: pip install litellm python-dotenv

API key

Bạn sẽ cần API key từ các nhà cung cấp bạn muốn dùng. Trong hướng dẫn này, chúng ta sẽ làm việc với hai mô hình:

Lưu các khóa này vào tệp .env trong thư mục dự án:

OPENAI_API_KEY=your_openai_key_here
ANTHROPIC_API_KEY=your_anthropic_key_here

Kiểm tra môi trường

Chạy script này để kiểm tra thiết lập của bạn:

import os
import sys
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

# Check Python version
print(f"Python version: {sys.version_info.major}.{sys.version_info.minor}")

# Check LiteLLM
try:
   import litellm
   print("✓ LiteLLM installed")
except ImportError:
   print("✗ LiteLLM not installed")

# Check API keys
openai_key = os.getenv("OPENAI_API_KEY")
anthropic_key = os.getenv("ANTHROPIC_API_KEY")

if openai_key:
   print(f"✓ OpenAI API key found")
else:
   print("✗ OpenAI API key not found")

if anthropic_key:
   print(f"✓ Anthropic API key found")
else:
   print("✗ Anthropic API key not found")
Python version: 3.11
✓ LiteLLM installed
✓ OpenAI API key found
✓ Anthropic API key found

Nếu bạn thấy tất cả dấu kiểm màu xanh, bạn đã sẵn sàng. Nếu kiểm tra nào thất bại, hãy đảm bảo bạn đã cài đặt các gói và thêm API key vào tệp .env.

Thực hiện cuộc gọi API đầu tiên với LiteLLM

LiteLLM dùng cùng một giao diện bạn có thể đã biết từ OpenAI, nhưng hoạt động với bất kỳ nhà cung cấp nào.

Thiết lập cơ bản

Bắt đầu với các import sau:

import litellm
from dotenv import load_dotenv

# Load your API keys
load_dotenv()

Một yêu cầu cơ bản tới GPT-5 theo mẫu sau: định nghĩa messages, gọi litellm.completion() và nhận phản hồi.

messages = [
   {"role": "user", "content": "Write a simple Python function that adds two numbers"}
]

response = litellm.completion(
   model="gpt-5",
   messages=messages
)

print(response.choices[0].message.content)
def add(a, b):
   """Return the sum of a and b."""
   return a + b

Bạn vừa gọi GPT-5 thông qua LiteLLM. Đối tượng phản hồi tuân theo định dạng của OpenAI, nên nếu bạn từng dùng API của họ, điều này sẽ quen thuộc. Bạn có thể muốn kiểm tra mô hình nào thực sự phản hồi và lượng token đã dùng:

print(f"Model used: {response.model}")
print(f"Response ID: {response.id}")
print(f"Total tokens: {response.usage.total_tokens}")
Model used: gpt-5-2025-08-07
Response ID: chatcmpl-CIbZWUDE1amW2vHtHDmieTX6hnZUq
Total tokens: 557

Chuyển đổi nhà cung cấp

Sức mạnh thực sự của LiteLLM thể hiện khi bạn chuyển đổi nhà cung cấp. Muốn thử Claude Sonnet 4 thay thế? Chỉ cần đổi một tham số:

response = litellm.completion(
   model="anthropic/claude-sonnet-4-20250514",
   messages=messages
)

print(response.choices[0].message.content)
Here's a simple Python function that adds two numbers:

def add_numbers(a, b):
   """
   Adds two numbers and returns the result.
  
   Args:
       a: First number
       b: Second number
  
   Returns:
       The sum of a and b
   """
   return a + b

# Example usage:
result = add_numbers(5, 3)
print(result)  # Output: 8

This function:
- Takes two parameters a and b
- Returns their sum using the + operator
- Works with integers, floats, and even negative numbers
- Includes a docstring to explain what the function does

Cùng cấu trúc code, khác nhà cung cấp. Claude đưa ra phản hồi chi tiết hơn với tài liệu và ví dụ, trong khi GPT-5 súc tích hơn.

Xử lý lỗi cơ bản

Thêm xử lý lỗi cho các tình huống trục trặc:

try:
   response = litellm.completion(
       model="gpt-5",
       messages=messages
   )
   print(response.choices[0].message.content)
except Exception as e:
   print(f"API call failed: {e}")

Mẫu này bắt các vấn đề thường gặp như API key không hợp lệ, sự cố mạng hoặc mô hình không khả dụng.

Tiếp theo là gì

Giờ bạn đã biết mẫu cơ bản để dùng LiteLLM với bất kỳ nhà cung cấp nào. Tài liệu Bắt đầu trình bày chi tiết hơn về các mô hình và tham số được hỗ trợ, còn phần Tài liệu hàm Completion liệt kê toàn bộ tùy chọn khả dụng.

Khi xây dựng ứng dụng sản xuất, bạn cũng nên tuân theo các thực tiễn tốt nhất về thiết kế API để tạo ra hệ thống đáng tin cậy và hiệu năng cao.

Chuyển nhà cung cấp và phương án dự phòng

Hệ thống dự phòng của LiteLLM tự động xử lý lỗi nhà cung cấp để người dùng của bạn không thấy thông báo lỗi. Khi xây dựng ứng dụng thực tế, bạn cần các phương án dự phòng hoạt động mà không cần thêm code.

Thiết lập dự phòng cơ bản

Để thiết lập dự phòng, thêm danh sách fallbacks vào lời gọi completion:

messages = [
   {"role": "user", "content": "Explain what a Python decorator is in one sentence"}
]

response = litellm.completion(
   model="gpt-5",
   messages=messages,
   fallbacks=["anthropic/claude-sonnet-4-20250514"]
)

print(f"Response: {response.choices[0].message.content}")
print(f"Model used: {response.model}")
Response: A Python decorator is a callable that wraps another function or class to augment its behavior and returns it, applied with the @ syntax so you can add reusable functionality without changing the original code.
Model used: gpt-5-2025-08-07

Nếu GPT-5 gặp lỗi, LiteLLM sẽ tự động thử Claude Sonnet 4. Dù thế nào người dùng cũng nhận được phản hồi.

Xây chuỗi dự phòng

Bạn có thể xâu chuỗi nhiều nhà cung cấp để tăng độ tin cậy. Dùng lại messages như trước:

response = litellm.completion(
   model="gpt-5",
   messages=messages,
   fallbacks=["anthropic/claude-sonnet-4-20250514", "gpt-3.5-turbo"]
)

print(f"Model used: {response.model}")
Model used: gpt-5-2025-08-07

LiteLLM thử các mô hình theo thứ tự. Nếu mô hình chính lỗi, nó thử dự phòng thứ nhất. Nếu tiếp tục lỗi, nó thử dự phòng thứ hai. Nhiều lớp bảo vệ.

Thêm retry

Kết hợp dự phòng với retry để tăng độ tin cậy hơn nữa:

response = litellm.completion(
   model="gpt-5",
   messages=messages,  # Same messages as before
   num_retries=2
)

Thử lại cùng mô hình hai lần trước khi chuyển sang dự phòng. Hữu ích cho sự cố mạng tạm thời hoặc đột biến giới hạn tốc độ.

Dự phòng xử lý hầu hết lỗi tự động, nhưng bạn vẫn nên bắt trường hợp mọi mô hình đều thất bại:

try:
   response = litellm.completion(
       model="gpt-5",
       messages=messages,  # Same messages as before
       fallbacks=["anthropic/claude-sonnet-4-20250514"],
       num_retries=2
   )
   return response.choices[0].message.content
except Exception as e:
   # All models failed - handle gracefully
   return "Sorry, I'm having trouble right now. Please try again."

Ngay cả khi nhà cung cấp hoạt động hoàn hảo, người dùng vẫn đối mặt với một vấn đề khác: thời gian chờ khó chịu. Ai đó bấm gửi trong ứng dụng của bạn và không thấy gì trong vài giây. Họ tự hỏi liệu thứ gì đó đã hỏng.

Streaming cho phản hồi theo thời gian thực

Hầu hết phản hồi API AI đến dưới dạng một khối hoàn chỉnh, giống như tải xuống một tệp. Người dùng chờ đợi mà không có phản hồi cho đến khi toàn bộ phản hồi sẵn sàng. Streaming thay đổi điều này bằng cách hiển thị văn bản khi nó được tạo, từng chữ một.

Vì sao streaming thay đổi trải nghiệm người dùng

Thay vì chờ phản hồi hoàn chỉnh, streaming hiển thị văn bản khi AI tạo ra. Xem sự khác biệt:

import litellm
from dotenv import load_dotenv

load_dotenv()

messages = [{"role": "user", "content": "What is Python in one sentence?"}]

response = litellm.completion(
   model="gpt-5",
   messages=messages,
   stream=True
)

for chunk in response:
   if chunk.choices[0].delta.content:
       print(chunk.choices[0].delta.content, end="", flush=True)
Python is a high-level, interpreted, dynamically typed, general-purpose programming language known for its readability and vast ecosystem, used across web development, data science, automation, scripting, and more.

Văn bản xuất hiện dần thay vì một lần (khi chạy đoạn mã trên máy của bạn). Người dùng thấy tiến trình ngay lập tức, mang lại cảm giác phản hồi tốt hơn nhiều so với nhìn chằm chằm vào vòng quay tải.

Streaming hoạt động thế nào

Cơ chế hoạt động ở mức chunk. Thay vì một phản hồi lớn, bạn nhận nhiều mẩu nhỏ gọi là delta. Đôi khi chunk rỗng, vì vậy bạn nên xử lý phù hợp để an toàn:

response = litellm.completion(
   model="anthropic/claude-sonnet-4-20250514",
   messages=[{"role": "user", "content": "Define JavaScript in exactly two sentences"}],
   stream=True
)

for chunk in response:
   if hasattr(chunk.choices[0].delta, 'content') and chunk.choices[0].delta.content:
       print(f"'{chunk.choices[0].delta.content}'", end=" ")
'JavaScript is a high' '-level, interpreted programming language primarily used for creating' ' interactive and dynamic content on web pages, running' ' in web browsers to manip' 'ulate HTML elements, handle user events' ', and communicate with servers.' ' Originally designed for client-side web development, JavaScript has evolve' 'd into a versatile language that can also' ' be used for server-side development, mobile applications' ', and desktop software through various runtime' ' environments like Node.js.'

Tái sử dụng streaming

Với ứng dụng thực tế, bạn sẽ muốn vừa hiển thị đầu ra streaming vừa gom toàn bộ phản hồi. Đây là một hàm để làm điều đó:

def stream_and_capture(model, messages):
   """Stream response while capturing the complete text"""
   response = litellm.completion(
       model=model,
       messages=messages,
       stream=True
   )
  
   full_response = ""
   for chunk in response:
       if chunk.choices[0].delta.content:
           content = chunk.choices[0].delta.content
           print(content, end="", flush=True)
           full_response += content
  
   print()  # New line after response
   return full_response

# Test it
messages = [{"role": "user", "content": "Define APIs in 2 sentences max"}]
result = stream_and_capture("gpt-5", messages)
APIs (Application Programming Interfaces) are standardized contracts, often exposed as endpoints, that specify how software components or services can communicate, including the allowed operations, inputs, and outputs. They let developers access functionality or data without knowing the underlying implementation, enabling modular, interoperable systems.

Tham số end="" ngăn xuống dòng giữa các chunk. flush=True buộc hiển thị ngay thay vì đệm.

Streaming với dự phòng

Bạn cũng có thể kết hợp streaming với hệ thống dự phòng để tăng độ tin cậy:

response = litellm.completion(
   model="gpt-5",
   messages=[{"role": "user", "content": "Define machine learning in one sentence"}],
   fallbacks=["anthropic/claude-sonnet-4-20250514"],
   stream=True
)

for chunk in response:
   if chunk.choices[0].delta.content:
       print(chunk.choices[0].delta.content, end="", flush=True)
Machine learning is a branch of artificial intelligence where algorithms learn patterns from data to make predictions or decisions without being explicitly programmed.

Phản hồi ngay lập tức cộng với tự động chuyển nhà cung cấp nếu mô hình chính lỗi.

Streaming mang lại phản hồi tức thì, nhưng khi xây dựng ứng dụng thực tế bạn vẫn gặp một vấn đề khác. Khi văn bản về đến nơi, code của bạn cần xử lý nó. Bạn có thể trích xuất dữ liệu, lưu thông tin vào cơ sở dữ liệu hoặc truyền giá trị cho các hàm khác. Nhưng phân tích cú pháp văn bản rất lộn xộn và dễ hỏng khi định dạng thay đổi.

Sử dụng đầu ra có cấu trúc

Thực tế sẽ như sau: Bạn xây một ứng dụng phân tích phản hồi khách hàng. AI trả về văn bản kiểu “Cảm xúc là tích cực với độ tin cậy 0.85 và từ khóa hàng đầu: responsive, helpful, fast.” Bạn viết regex để trích xuất điểm tin cậy và từ khóa. Mọi thứ hoạt động trong thử nghiệm.

Sau đó AI hơi đổi định dạng phản hồi thành “Sentiment: positive (confidence: 0.85). Keywords include responsive, helpful, and fast.” Regex của bạn hỏng. Pipeline dữ liệu dừng hoạt động. Báo cáo cảm xúc khách hàng hiển thị rỗng thay vì điểm số. Bảng điều khiển sập. Bạn phải mất hàng giờ để sửa code phân tích từng hoạt động tốt hôm qua.

Đầu ra có cấu trúc bỏ qua vấn đề này bằng cách trả về dữ liệu ở định dạng có thể dự đoán ngay từ đầu.

Nhận JSON thay vì văn bản

LiteLLM có thể trả về JSON thay vì văn bản thuần. Bạn yêu cầu cấu trúc mong muốn qua prompt, và nó sẽ trả về đúng định dạng:

import litellm
from dotenv import load_dotenv

load_dotenv()

messages = [{"role": "user", "content": "Describe Python as a programming language. Return as JSON with fields: language, difficulty, description"}]

response = litellm.completion(
   model="gpt-5",
   messages=messages,
   response_format={"type": "json_object"}
)

print(response.choices[0].message.content)
{
 "language": "Python",
 "difficulty": "Beginner-friendly (easy to learn, moderate to master)",
 "description": "Python is a high-level, interpreted, dynamically typed, general-purpose programming language focused on readability and developer productivity. It supports multiple paradigms (object-oriented, functional, procedural), uses indentation for block structure, and includes a large standard library with an extensive third-party ecosystem (PyPI). Common uses include web development, data science, machine learning, automation/scripting, scientific computing, and DevOps. While not the fastest for CPU-bound tasks, it integrates well with C/C++ and accelerators, and runs cross-platform."
}

Cách tiếp cận có cấu trúc này loại bỏ các vấn đề phân tích thường gặp. Thay vì lục lọi văn bản, bạn nhận về JSON hợp lệ với đúng các trường yêu cầu. Không đau đầu phân tích, không bất ngờ về định dạng.

Làm việc với dữ liệu JSON

Chuỗi JSON thô không hữu ích cho đến khi bạn chuyển đổi thành đối tượng Python mà ứng dụng có thể dùng. Bạn cần biến chuỗi đó thành các đối tượng Python có thể thao tác được:

import json

messages = [{"role": "user", "content": "Describe JavaScript in 2 sentences. Return as JSON with fields: name, paradigm, use_cases (array of exactly 3 items)"}]

response = litellm.completion(
   model="anthropic/claude-sonnet-4-20250514",
   messages=messages,
   response_format={"type": "json_object"}
)

# Parse the JSON response
data = json.loads(response.choices[0].message.content)
print(f"Language: {data['name']}")
print(f"Paradigm: {data['paradigm']}")
print(f"Use cases: {', '.join(data['use_cases'])}")
Language: JavaScript
Paradigm: multi-paradigm (object-oriented, functional, event-driven)
Use cases: web development and browser scripting, server-side development with Node.js, mobile app development with frameworks like React Native

Khi đã có dữ liệu có cấu trúc, bạn có thể truyền thẳng cho các hàm khác, lưu vào cơ sở dữ liệu, hoặc hiển thị trên UI mà không cần xử lý văn bản. Với quy trình phân tích dữ liệu, các công cụ như Pandas AI có thể làm việc trực tiếp với đầu ra có cấu trúc này để tạo insight.

Bổ sung an toàn kiểu với Pydantic

Phân tích JSON bắt lỗi cú pháp, nhưng kiểu dữ liệu sai hoặc thiếu trường là vấn đề khác. Các mô hình Pydantic giải quyết điều này bằng cách xác thực cấu trúc dữ liệu và bắt lỗi trước khi chúng phá vỡ ứng dụng của bạn:

from pydantic import BaseModel
import json

class ProgrammingLanguage(BaseModel):
   name: str
   paradigm: str
   use_cases: list[str]

messages = [{"role": "user", "content": "Describe CSS briefly. Return as JSON with fields: name, paradigm, use_cases (array of 3 items)"}]

response = litellm.completion(
   model="gpt-5",
   messages=messages,
   response_format={"type": "json_object"}
)

# Parse and validate with Pydantic
data = json.loads(response.choices[0].message.content)
language = ProgrammingLanguage(**data)

print(f"Validated data: {language.name} - {language.paradigm}")
print(f"Use cases: {language.use_cases}")
Validated data: CSS (Cascading Style Sheets) - Declarative, rule-based stylesheet language for describing the presentation of structured documents.
Use cases: ['Styling layout, colors, and typography of web pages', 'Responsive design across devices and viewports', 'Animations, transitions, and visual effects']

Pydantic tự động xác thực rằng name và paradigm là chuỗi, và use_cases là danh sách chuỗi. Nếu AI trả về sai kiểu hoặc quên trường bắt buộc, bạn sẽ nhận lỗi rõ ràng thay vì những bug khó hiểu về sau.

Xử lý lỗi JSON

Phân tích JSON có thể thất bại nếu AI trả về JSON lỗi cú pháp hoặc văn bản không phải JSON. Thêm xử lý lỗi cơ bản:

import json

messages = [{"role": "user", "content": "Summarize machine learning in 1 sentence. Return as JSON with topic and summary fields"}]

try:
   response = litellm.completion(
       model="anthropic/claude-sonnet-4-20250514",
       messages=messages,
       response_format={"type": "json_object"}
   )
  
   data = json.loads(response.choices[0].message.content)
   print(f"Topic: {data['topic']}")
   print(f"Summary: {data['summary']}")
  
except json.JSONDecodeError:
   print("Invalid JSON returned")
except Exception as e:
   print(f"Request failed: {e}")
Topic: machine learning
Summary: Machine learning is a subset of artificial intelligence that allows computers to learn and make predictions or decisions from data without being explicitly programmed for each specific task.

Đầu ra có cấu trúc thay thế việc phân tích văn bản lộn xộn bằng cấu trúc dữ liệu sạch. Bạn có thể kết hợp chế độ JSON với dự phòng tương tự như completion thông thường.

Đầu ra có cấu trúc cho bạn dữ liệu sạch, có thể dự đoán và không làm vỡ logic phân tích. Nhưng còn một vấn đề khác khi bạn chuyển từ nguyên mẫu sang sản xuất: chi phí. Mỗi cuộc gọi API đều tốn tiền, và các khoản chi này có thể khiến bạn bất ngờ.

Theo dõi chi phí

Kịch bản thường gặp: Nguyên mẫu của bạn chạy rất tốt trong thử nghiệm với 50 cuộc gọi API mỗi ngày. Bạn tốn khoảng 2 đô mỗi tuần. Mọi thứ có vẻ ổn. Bạn đưa lên sản xuất và có 500 người dùng. Giờ bạn thực hiện 5.000 cuộc gọi API mỗi ngày. Hóa đơn hàng tháng tăng từ 8 đô lên 800 đô.

Không có theo dõi chi phí, bạn không có cảnh báo. Bạn không thể biết tính năng nào tốn nhất, mô hình nào đắt hơn, hoặc lập ngân sách tăng trưởng ra sao. Bạn phát hiện khoản chi tăng vọt sau vài tuần khi nhận bảng sao kê thẻ tín dụng.

LiteLLM theo dõi chính xác những gì bạn đã chi trên tất cả nhà cung cấp.

Hiểu về mức sử dụng token

Mỗi phản hồi AI bao gồm thông tin sử dụng chi tiết cho biết chính xác những gì bạn bị tính phí:

import litellm
from dotenv import load_dotenv

load_dotenv()

messages = [{"role": "user", "content": "Explain what a REST API is in two sentences"}]

response = litellm.completion(
   model="gpt-5",
   messages=messages
)

print(f"Response: {response.choices[0].message.content}")
print(f"Prompt tokens: {response.usage.prompt_tokens}")
print(f"Completion tokens: {response.usage.completion_tokens}")
print(f"Total tokens: {response.usage.total_tokens}")
Response: A REST API is a web service that follows the Representational State Transfer architectural style, exposing resources identified by URLs and manipulated with HTTP methods like GET, POST, PUT, and DELETE. It uses stateless client-server communication, cacheability, and uniform representations (often JSON) to support scalable, decoupled interactions.
Prompt tokens: 15
Completion tokens: 201
Total tokens: 216

Token đầu vào là prompt của bạn, token đầu ra là phản hồi của AI. Các nhà cung cấp tính phí với mức khác nhau cho mỗi loại.

Tính chi phí tự động

Số token thô không cho bạn biết số tiền. LiteLLM tính giúp bạn chi phí thực tế:

# Get the cost for a completed response
cost = litellm.completion_cost(completion_response=response)
print(f"Total cost: ${cost:.4f}")
Total cost: $0.0020

Cơ sở dữ liệu giá của LiteLLM chuyển đổi token sang đô-la dựa trên mô hình bạn dùng.

Tính chi phí thủ công

Đôi khi bạn muốn ước tính chi phí trước khi gọi, hoặc tính chi phí cho văn bản bạn đã có:

# Calculate cost without making an API call
prompt_text = "Explain machine learning"
completion_text = "Machine learning is a method of data analysis that automates analytical model building."

estimated_cost = litellm.completion_cost(
   model="anthropic/claude-sonnet-4-20250514",
   prompt=prompt_text,
   completion=completion_text
)

print(f"Estimated cost: ${estimated_cost:.4f}")
Estimated cost: $0.0002

Điều này hữu ích cho việc lập ngân sách và so sánh mô hình.

Theo dõi nhiều cuộc gọi API

Với ứng dụng thực hiện nhiều cuộc gọi API, bạn có thể theo dõi chi phí cộng dồn:

total_cost = 0.0

conversation = [
   "What is Python?",
   "How do you install Python packages?",
   "What are virtual environments?"
]

for i, question in enumerate(conversation):
   response = litellm.completion(
       model="gpt-5",
       messages=[{"role": "user", "content": question}]
   )
  
   call_cost = litellm.completion_cost(completion_response=response)
   total_cost += call_cost
  
   print(f"Call {i+1}: ${call_cost:.4f}")

print(f"Total cost: ${total_cost:.4f}")
Call 1: $0.0057
Call 2: $0.0134
Call 3: $0.0102
Total cost: $0.0292

Theo dõi chi phí giúp bạn đưa ra quyết định sáng suốt về mô hình cần dùng và tránh hóa đơn bất ngờ. Thấy rõ chi phí mỗi cuộc gọi API và so sánh giữa các nhà cung cấp.

Kết luận

Giờ bạn đã có công cụ để xây dựng ứng dụng AI mà không bị khóa nhà cung cấp. Bạn đã học cách gọi API cơ bản, dự phòng tự động, phản hồi streaming, đầu ra có cấu trúc và theo dõi chi phí.

Điều này cho bạn tự do chọn mô hình tốt nhất cho từng tác vụ. Dễ dàng chuyển nhà cung cấp, thiết lập dự phòng tự động và theo dõi chi phí. Khi có mô hình tốt hơn, bạn có thể áp dụng mà không cần viết lại code.


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

Tôi là người sáng tạo nội dung về khoa học dữ liệu với hơn 2 năm kinh nghiệm và là một trong những tài khoản có lượng người theo dõi lớn nhất trên Medium. Tôi thích viết các bài chuyên sâu về AI và ML với chút giọng điệu mỉa mai, vì bạn cũng phải làm gì đó để chúng bớt khô khan. Tôi đã xuất bản hơn 130 bài viết và một khóa học trên DataCamp, cùng với một khóa nữa đang được thực hiện. Nội dung của tôi đã được hơn 5 triệu lượt xem, trong đó 20 nghìn người đã trở thành người theo dõi trên cả Medium và LinkedIn. 

Chủ đề
Trí tuệ Nhân tạo
Mô hình Ngôn ngữ Lớn

Học AI với các khóa học này!

Khóa học

Mô hình AI có khả năng mở rộng với PyTorch Lightning

3 giờ
1.3K
Tối ưu hóa các dự án AI của bạn bằng cách xây dựng các mô hình mô-đun và nắm vững các kỹ thuật tối ưu hóa nâng cao với PyTorch Lightning!
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm