Nhận diện hình ảnh (Image Inputs)

Cách gửi hình ảnh đến các model của Trạm AI

Để gửi hình ảnh tới các multimodal model, hãy dùng API /v1/chat/completions với tham số messages ở dạng multi-part. Trường image_url có thể là một URL, hoặc một ảnh đã mã hóa base64. Người dùng cũng có thể gửi nhiều ảnh cùng lúc, mỗi ảnh nằm trong một entry riêng của mảng content. Số ảnh tối đa trong một request sẽ tùy theo từng provider và từng model.

Mẹo nhỏ: Do cách content được xử lý, hãy đặt text prompt trước rồi mới tới hình ảnh. Nếu bắt buộc phải để ảnh lên đầu, hãy đưa ảnh vào system prompt.

Với hình ảnh, Trạm AI hỗ trợ hai cách:

  • URL trực tiếp: Đơn giản hơn cho ảnh công khai, không cần mã hóa.
  • Base64: Dùng khi ảnh nằm ở máy cá nhân, hoặc ảnh riêng tư không truy cập công khai được.

Gửi ảnh bằng URL

Đây là cách gửi một ảnh qua URL:

1import OpenAI from 'openai';
2
3const openai = new OpenAI({
4 baseURL: 'https://api.staging.tram.ai.vn/v1',
5 apiKey: '<TRAM_AI_API_KEY>',
6});
7
8const result = await openai.chat.completions.create({
9 model: 'google/gemini-3-flash-preview',
10 messages: [
11 {
12 role: 'user',
13 content: [
14 {
15 type: 'text',
16 text: "What's in this image?",
17 },
18 {
19 type: 'image_url',
20 imageUrl: {
21 url: 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg',
22 },
23 },
24 ],
25 },
26 ],
27 stream: false,
28});
29
30console.log(result);

Gửi ảnh mã hóa Base64

Với ảnh lưu sẵn ở máy, chỉ cần mã hóa base64 rồi gửi đi. Cách thực hiện như sau:

1import OpenAI from 'openai';
2import * as fs from 'fs';
3
4const openai = new OpenAI({
5 baseURL: 'https://api.staging.tram.ai.vn/v1',
6 apiKey: '<TRAM_AI_API_KEY>',
7});
8
9async function encodeImageToBase64(imagePath: string): Promise<string> {
10 const imageBuffer = await fs.promises.readFile(imagePath);
11 const base64Image = imageBuffer.toString('base64');
12 return `data:image/jpeg;base64,${base64Image}`;
13}
14
15// Read and encode the image
16const imagePath = 'path/to/your/image.jpg';
17const base64Image = await encodeImageToBase64(imagePath);
18
19const result = await openai.chat.completions.create({
20 model: 'google/gemini-3-flash-preview',
21 messages: [
22 {
23 role: 'user',
24 content: [
25 {
26 type: 'text',
27 text: "What's in this image?",
28 },
29 {
30 type: 'image_url',
31 imageUrl: {
32 url: base64Image,
33 },
34 },
35 ],
36 },
37 ],
38 stream: false,
39});
40
41console.log(result);

Các định dạng ảnh hỗ trợ:

  • image/png
  • image/jpeg
  • image/webp
  • image/gif