Train Flux LoRAs For Portraits
التكامل
flux-lora-portrait-trainer
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://vit.doitong.com/api/v1/run/flux-lora-portrait-trainer?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://vit.doitong.com/api/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://vit.doitong.com/api/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/flux-lora-portrait-trainer?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://vit.doitong.com/api/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/flux-lora-portrait-trainer", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/ar/developers/docs/mcp)
claude mcp add --transport http doitong-models https://vit.doitong.com/api/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "flux-lora-portrait-trainer",
"input": {
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
}
استدعِ نموذج Train Flux LoRAs For Portraits (flux-lora-portrait-trainer) عبر Doitong API. توثيق الوكلاء: https://doitong.com/ar/developers/models/flux-lora-portrait-trainer.md
POST https://vit.doitong.com/api/v1/run/flux-lora-portrait-trainer?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
إذا كانت حالة الاستجابة "queued" أو "running"، فأرسل طلبات GET إلى https://vit.doitong.com/api/v1/requests/REQUEST_ID?wait=20 حتى تصبح "succeeded"؛ توجد الملفات في outputs[].url. يعيد POST https://vit.doitong.com/api/v1/quote/flux-lora-portrait-trainer مع نفس النص الأساسي السعر الدقيق قبل التشغيل.
ملفات مثل المثال: 6.00 $ 6,000 رصيد API تُقاس ملفاتك قبل التشغيل تشغيله في هذه الصفحة
مفتاح API الجديد الخاص بك. يظهر الآن فقط، وهو مُدرج بالفعل في الشيفرة وفي حقل مفتاح API أدناه. احتفظ به سريًا: لا تضعه أبدًا في شيفرة تعمل في المتصفح.
ستظهر نتيجتك الأولى هنا
أنشئ طلبًا أدناه وشغّله باستخدام مفتاح API الخاص بك. تُنسخ المخرجات إلى تخزيننا، وتُحفظ إلى الأبد أو لمدة 7 أيام مجانًا.
إنشاء طلب
تُنشأ عناصر التحكم من مخطط النموذج. يتحدّث الرمز والسعر عند تغييرها.
/run/flux-lora-portrait-trainer?wait=20
عرض السعر → 6.00 $
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://vit.doitong.com/api/v1/run/flux-lora-portrait-trainer?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://vit.doitong.com/api/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://vit.doitong.com/api/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/flux-lora-portrait-trainer?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://vit.doitong.com/api/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/flux-lora-portrait-trainer", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "flux-lora-portrait-trainer",
"input": {
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
},
"wait_seconds": 20
}
}
}
تشغيل هذا الطلب
يبقى مفتاحك في هذا المتصفح: لا يُرسل إلا إلى Doitong API ويُحفظ في localStorage فقط إذا فعّلت خيار التذكّر. الحصول على مفتاح API
حول Train Flux LoRAs For Portraits
يدرّب LoRA مخصصًا للصور الشخصية من ملف zip للصور في `images_data_url`؛ ويُقترح استخدام 10 صور على الأقل. تشمل الخيارات `trigger_phrase`، و`learning_rate` (من 1e-6 إلى 0.001)، و`steps` (الافتراضي 2500، والحد الأقصى 10000)، و`subject_crop`، والتدريب متعدد الدقة، و`resume_from_checkpoint`. يعيد الأوزان وملف الإعدادات.
المعاملات
images_data_urlمطلوب
trigger_phraseاختياري
learning_rateاختياري
stepsاختياري
multiresolution_trainingاختياري
subject_cropاختياري
data_archive_formatاختياري
resume_from_checkpointاختياري
create_masksاختياري
المخرجات
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "flux-lora-portrait-trainer",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 6000,
"usd": "6.00",
"charged": 6000,
"refunded": 0
},
"input": {
"images_data_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
},
"output": {
"diffusers_lora_file": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
},
"config_file": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200
}
},
"outputs": [
{
"type": "file",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_size": 1843200,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://vit.doitong.com/api/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://vit.doitong.com/api/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
حقول المخرجات
- diffusers_lora_file
- object {url, content_type, file_name, file_size}عنوان URL يشير إلى أوزان LoRA المدرّبة بتنسيق diffusers.
- config_file
- object {url, content_type, file_name, file_size}عنوان URL لملف إعدادات التدريب.
مزيد من النماذج: التدريب
لوكلاء الذكاء الاصطناعي: تتوفر هذه الصفحة بصيغة Markdown على https://doitong.com/ar/developers/models/flux-lora-portrait-trainer.md. جميع النماذج والأدلة: https://doitong.com/developers/llms.txt