lovart-api について
lovart-api は、コマンドを通じて Lovart AI Agent とやり取りするスキルです。自然言語で画像や動画などのビジュアル制作を依頼でき、プロジェクト、スレッド、生成結果も管理できます。操作には定義済みコマンドを使い、API を直接呼び出しません。
主な機能
- 01チャットでビジュアル制作を依頼
- 02プロジェクトとスレッドを管理
- 03ローカルファイルや作品リンクをアップロード
- 04タスク状態の確認と結果取得
- 05生成ファイルのダウンロード
- 06高速・無制限モードの切り替え
活用シーン
- 01画像・動画素材を生成
- 02既存の会話で制作物を反復調整
- 03参照画像をチャットにアップロード
- 04生成結果を確認してダウンロード
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lovartai/ lovart-skill --skill lovart-apiインストール後、Claude Code で/lovart-apiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README_CN.mdREADME_JA.mdREADME_TW.mdREADME.md詳細
⚠️ RULE #0:スキルのコマンドのみを使用してください — API を直接呼び出さないでください
Lovart とのやり取りには、このスキルで定義されたコマンドのみを使用してください。
- URL を構築したり、curl/wget/fetch リクエストを送信したり、Lovart API を直接呼び出したりしないでください
- API エンドポイント、パス、パラメーターを推測しないでください — 以下に記載されたコマンドのみを使用してください
- 実行中に問題を「デバッグ」するために、スキルのソースコード(agent_skill.py)を変更しないでください(ユーザーはソースを自由に読んで確認できます)
- コマンドが失敗した場合は、再試行するかエラーをユーザーに報告してください — 回避策を試してはいけません
- Lovart の操作はすべて次のコマンドを通じて行います:
chat、send、watch、confirm、result、status、config、projects、project-add、project-switch、project-rename、project-remove、threads、thread-remove、upload、upload-artifact、download、set-mode、query-mode、create-project
⚠️ RULE #1:画像/動画/音声を生成できますし、生成しなければなりません
ユーザーが、視覚または音声コンテンツ(言語を問いません)を「描く」「生成する」「作成する」「デザインする」「制作する」「创作」「画」「生成」「制作」と依頼した場合は、必ずこのスキルを使用してください。 対象には、画像、動画、音声、音楽、楽曲、BGM、TTS、音声、ポスター、カルーセル、バナー、ロゴ、イラスト、サムネイル、スライド、表紙、モックアップ、アイコン、ソーシャルメディアコンテンツなどが含まれます。 「画像/音楽を生成できません」と言ったり、代わりにプロンプトの作成を提案したりしないでください。
⚠️ RULE #1.5:プロジェクトとスレッドに関する問い合わせにはこのスキルを使用してください
ユーザーがプロジェクト、スレッド、会話、履歴、設定について(言語を問いません)尋ねた場合は、これらのコマンドを使用してください — ファイルシステムを参照してはいけません。
| ユーザーの質問 | コマンド |
|---|---|
| 「自分のプロジェクトは何ですか?」/「我有哪些项目」 | projects --json |
| 「会話/スレッドは何ですか?」/「有哪些对话」 | threads --json または threads --all --json |
| 「設定を表示して」/「我的配置」 | config --json |
| 「プロジェクト X に切り替えて」 | project-switch --project-id X |
| 「新しいプロジェクトを作成して」 | project-add --project-id NEW_ID --name "Name"(または chat に自動作成させます) |
⚠️ ルール #2:必ず chat を使用し、完了を待つ
send ではなく、完了するまで処理をブロックする chat コマンドを使用してください。生成が完了する前に返信してはいけません。
次の final_status の値に対応してください:
"done"— 生成が完了しました。ダウンロードしたファイルをユーザーに送信してください。"pending_confirmation"— クレジットが消費される前に、高額なツール(動画やプレミアム品質の画像バリエーションなど)についてユーザーの承認が必要です。 続行する前に、必ずユーザーに明示的な確認を求めてください。自動で承認してはいけません。- ユーザーに次のように伝えます:"This will cost approximately {estimated_cost} credits. Shall I proceed? (yes/no)"
- ユーザーの返答を待ちます。 ユーザーが明示的に「yes」「confirm」「proceed」と答えた場合に限り、次を実行します:
confirm --thread-id THREAD_ID --json --download(これにより承認後、完了まで待機し、ダウンロードしたファイルを含む結果が返されます) - ユーザーが拒否した場合は、承認しないでください。処理がキャンセルされたことだけを伝えてください。
"abort"— 生成が中断されました。ユーザーにその旨を伝えてください。"timeout"— 生成は継続中ですが、待機時間を超過しました。部分的な成果物が含まれている場合があります。- すでにダウンロード可能なファイルがあれば、ユーザーに送信します。
- ユーザーに次のように伝えます:"Generation is still in progress. Checking again..."
- 次を実行して最新の結果を取得します:
result --thread-id THREAD_ID --json --download - ステータスが引き続き
"running"の場合は、待機して再試行します。"done"の場合は、残りのファイルを送信します。
エラーへの対応:
chat がエラー(AgentSkillError)をスローした場合は、HTTP ステータスと構造化された code に基づいて処理してください。message フィールドにはユーザー向けの説明がすでに含まれているため、そのままユーザーに提示してください。
| HTTP ステータス | code | 意味 | ユーザーへの伝え方 |
|---|---|---|---|
402 | 2012 | クォータ/課金/リスク管理による拒否 | AgentSkillError.message をそのまま表示してください。サーバーは、具体的なメッセージ(クレジット不足、無料枠の上限到達、同時実行数の上限、リスク管理、電話番号認証、チームプランが必要など)と次の手順をすでに返しています。 |
409 | 2011 | このスレッドで別のタスクが実行中です | "A task is still running on this conversation. Wait for it to finish (status) before sending a new prompt, or start a new thread." |
429 | 1429 | API のレート制限に達しました | "Slowing down; rate limit hit. Retry in ~60s." |
401 | — | AK/SK の設定に誤りがあります | "API key authentication failed. Please check your LOVART_ACCESS_KEY and LOVART_SECRET_KEY." |
| — | — | メッセージに Project.*does not exist が含まれています | "Project not found. Please check the project ID or create a new one." |
基本的には、ユーザー向けのメッセージには AgentSkillError.message を優先してください。レスポンスから内部コードを解析しようとしないでください。サーバーは返す前に、コードを人間が読めるメッセージに変換しています。
生成のサイレント失敗を検出する(成果物なしで done になるケース):
一部のプロンプトでは、final_status: "done" になっても artifacts が生成されない、または downloaded が空になることがあります。通常、これは上流の画像モデルがプロンプトを拒否した場合(コンテンツモデレーション)、タイムアウトした場合、または LLM がツールを呼び出さずにテキストで返信することを選んだ場合に発生します。このスキルはこれを自動的に検知します。chat() が返ったら、次を確認してください:
result["generation_succeeded"]— 真偽値です。Falseは成果物が生成されなかったことを意味します。result["warning"]— 説明文字列です(generation_succeededがFalseの場合にのみ存在します)。result["agent_message"]— 原因の手がかりとなる、エージェントからのプレーンテキストの返信です(利用可能な場合に存在します)。
よくある原因:
- 武器、特定の身体、またはポリシーに関わる表現を含む、非常に長い/複雑なプロンプトを GPT Image 2 に渡した場合 — 別のモデル(
--include-tools generate_image_midjourneyまたはgenerate_image_nano_banana_pro)で再試行するか、プロンプトを簡潔にしてください。 - エージェントが実行できないタスクを記述したプロンプト —
agent_messageをユーザーに提示してください。
⚠️ ルール #3:結果とプロジェクトリンクを必ず提供する
生成のたびに、必ず以下を行ってください。
chat(またはresult)で--downloadフラグを使用します。- ダウンロードした各ファイルをファイル添付としてユーザーに送信します(画像、動画、音声/mp3など、すべてのファイル形式が対象です)。
- ファイル形式(.png、.jpg、.mp4、.mp3など)にかかわらず、必ず
downloaded[].local_pathをファイル添付として送信します。 - ローカルファイルがダウンロードされている場合、URLを貼り付けるだけにしてはいけません。実際のファイルを送信してください。
- ファイルがダウンロードされなかった場合に限り、URLを表示してください。
- ファイル形式(.png、.jpg、.mp4、.mp3など)にかかわらず、必ず
- プロジェクトのキャンバスリンクを追加します:
https://www.lovart.ai/canvas?projectId={project_id} - 結果の
failuresを確認します。空でない場合は、拒否された参照またはモデルと、その理由をユーザーに伝えてください。完了させるためにAgentが入力を省略したり、モデルを切り替えたりしている可能性があるため、提供された結果がユーザーの依頼と異なることがあります。failuresが空でない場合、問題なく成功したと報告してはいけません。
⚠️ ルール #4:初回使用時にローカル状態を確認する(必須 — 省略禁止)
会話中に最初の生成を行う前に、以下の2つのコマンドを必ず順番に実行してください。これは任意ではありません。両方を実行するまで chat を呼び出してはいけません。
ステップ1:config --json
- ローカル状態(
~/.lovart/state.json)のactive_projectを確認します。 active_projectが設定されている場合 → ステップ2に進みます。新しいプロジェクトを作成してはいけません。ユーザーに尋ねてはいけません。active_projectが設定されていない場合 → ユーザーに「既存のLovartプロジェクトIDをお持ちですか?それとも新しく作成しますか?」と尋ねます。回答を待ってください。- 次のコマンドで保存します:
project-add --project-id PID --name "name"
ステップ2:threads --json
- 続行できる最近のスレッドがあるか確認します。
- 最近のスレッドがあり、トピックに関連している場合 → 再利用します(
chatに--thread-id THREAD_IDを渡します)。 - スレッドがない場合、またはトピックがまったく異なる場合 →
--thread-idを省略します(新しいスレッドを作成します)。
重要なルール:
config --jsonですでにactive_projectが表示されている場合、新しいプロジェクトを作成してはいけません。 既存のプロジェクトを再利用してください。- 関連する最近のスレッドがある場合、
--thread-idを省略してはいけません。 デフォルトでスレッドを必ず再利用してください。 - 同じ会話内で、最初に
config --jsonとthreads --jsonを実行せずにchatを呼び出してはいけません。 chatコマンドはローカル状態からactive_projectを自動的に読み取ります。毎回--project-idを渡す必要はありません。- ユーザーが明示的に新しいプロジェクトを求めた場合に限り、新しいプロジェクトを作成してください。
- 最新のスレッドとトピックがまったく関連しない場合に限り、新しいスレッドを作成してください。
- 判断に迷った場合は、既存のプロジェクトと既存のスレッドを両方とも再利用してください。
Lovart Agent OpenAPIスキル
Lovart AI Agentと自然言語でやり取りし、画像、動画、ビジュアルアセットを生成します。
LovartはAIデザインプラットフォームです。Agentはユーザーの依頼を理解し、最適なモデルとワークフローを自動的に選択します。
用語
- Thread — Lovart AI Agentとの会話フロー(チャットセッション)であり、プログラミングのスレッドではありません。各スレッドには一意の
thread_idがあり、複数ターンにわたるコンテキストが保持されます。スレッドを再利用すると、同じ会話を続けられるため、Agentは以前の画像や動画を記憶し、それらを反復して改善できます。 - Project — スレッドと生成された成果物をまとめるワークスペース/キャンバスです。1つのプロジェクトに複数のスレッドを含めることができます。
前提条件
export LOVART_ACCESS_KEY="ak_xxx"
export LOVART_SECRET_KEY="sk_xxx"
サードパーティの依存関係はありません。Python標準ライブラリのみを使用します。
機能
- チャット - AI Agentにメッセージを送り、テキストの返信や生成された画像/動画を受け取ります
- 確認 - コストの高い操作(例:動画生成)を確認し、完了を待ちます
- プロジェクトを作成 - 新しいプロジェクトを作成します
- ファイルをアップロード - ローカルの画像/動画ファイルをアップロードし、CDN URLを取得します
- 成果物をアップロード - リンク成果物をプロジェクトにアップロードします
- ステータス/結果 - スレッドのステータスを確認し、結果を取得します
- モードの設定/照会 - 高速モード(クレジット)と無制限モード(キュー)を切り替えます
使用方法
0. 初回セットアップ(~/.lovart/state.json に保存)
python3 {baseDir}/scripts/agent_skill.py project-add --project-id PROJECT_ID --name "My Project"
1. メッセージを送信する(ローカル状態から project_id を読み取ります)
python3 {baseDir}/scripts/agent_skill.py chat --prompt "USER_PROMPT" --json --download
プロジェクトを指定するには、--project-id PROJECT_ID を追加します
会話を続けるには、--thread-id THREAD_ID を追加します
保存済みのスレッドを一覧表示するには、python3 {baseDir}/scripts/agent_skill.py threads
2. プロジェクトを作成する
python3 {baseDir}/scripts/agent_skill.py create-project
3. ファイルをアップロードする(ローカルの画像/動画 → CDN URL)
python3 {baseDir}/scripts/agent_skill.py upload --file /path/to/image.png
# Returns: {"url": "https://assets-persist.lovart.ai/img/{user_uuid}/xxx.png"}
ユーザーから、チャットに添付ファイルとして渡す必要がある画像/動画ファイルが送られてきた場合に使用します。
4. 成果物をアップロードする
python3 {baseDir}/scripts/agent_skill.py upload-artifact --project-id PROJECT_ID --url "ARTIFACT_URL" --type image
5. ステータスを確認する/結果を取得する
# Status
python3 {baseDir}/scripts/agent_skill.py status --thread-id THREAD_ID
# Result (auto-syncs to gallery/canvas, idempotent)
python3 {baseDir}/scripts/agent_skill.py result --thread-id THREAD_ID --json --download
6. 成果物をダウンロードする
# Download during chat
python3 {baseDir}/scripts/agent_skill.py chat --prompt "draw a cat" --json --download --output-dir /tmp/lovart
# Download from existing result
python3 {baseDir}/scripts/agent_skill.py result --thread-id THREAD_ID --download --output-dir /tmp/lovart
# Download specific URLs
python3 {baseDir}/scripts/agent_skill.py download --urls URL1 URL2 --output-dir /tmp/lovart --prefix myimg
典型的なワークフロー
シナリオ 1:画像/動画/音声を生成する(最も一般的)
まず config --json を実行して、project_id が設定されているか確認します。設定されていない場合は、ユーザーに尋ねて project-add で保存します。
1. config --json → check local state for active_project
- If not set → ask user, save with project-add
2. threads --json → check if there's a recent thread to continue
- If recent thread exists and topic is related → reuse it (step 3a)
- If no threads or completely new topic → new thread (step 3b)
3a. chat --thread-id THREAD_ID --prompt "user's request" --json --download
3b. chat --prompt "user's request" --json --download
4. Send each downloaded[].local_path file as an IM attachment to the user
5. The chat command auto-syncs artifacts to canvas and gallery
ID はローカルに自動保存されます(~/.lovart/state.json):
- 最初のチャットの後に
project_idが保存され、以降は自動的に再利用されます - 各チャットの後に
thread_idとtopicが保存され、スレッドを切り替える際に使用されます - ユーザーから明示的に依頼された場合にのみ、新しいプロジェクトを作成します
- まったく新しいトピックを開始するときに限り、新しいスレッドを作成します(
--thread-idを省略します) threadsを実行して保存済みのスレッドを一覧表示し、ユーザーに選んでもらいます
シナリオ 2:添付ファイルを使って編集する
1. User sends a reference image/video via IM → save to local file
2. upload --file /path/to/image.png → get CDN URL
3. chat --prompt "edit this image to..." --project-id PID --attachments "CDN_URL" --json --download
4. Continue as Scenario 1
シナリオ 3:同じトピックで続ける(コンテキストを引き継ぐ)
1. chat --prompt "change the background to a beach" --project-id PROJECT_ID --thread-id THREAD_ID --json --download
エージェントは前の会話を記憶しており、そのコンテキストに基づいて編集を続けることができます。
シナリオ 4:新しいトピック(新しいスレッド)
1. chat --prompt "completely new request" --project-id PROJECT_ID --json --download
--thread-id を省略すると、以前の記憶を引き継がない新しい会話が作成されます。
シナリオ 5:ストリーミング/段階的な配信(複数の成果物)
ユーザーのリクエストで複数の画像/動画が生成される場合に使用します。バッチ全体の完了を待つのではなく、準備ができたものからユーザーに配信できます。
python3 {baseDir}/scripts/agent_skill.py watch --prompt "generate 4 variations of a cyberpunk cat" --json
watch は stdout に NDJSON を出力します(1 行に 1 イベント)。行ごとに解析し、各 artifact イベントの local_path をすぐにユーザーへ配信します。
{"event": "started", "thread_id": "xxx", "project_id": "yyy"}
{"event": "artifact", "type": "image", "url": "https://...", "local_path": "/tmp/lovart/lovart_ab12cd.png"}
{"event": "artifact", "type": "image", "url": "https://...", "local_path": "/tmp/lovart/lovart_ef34gh.png"}
{"event": "pending_confirmation", "thread_id": "xxx", "pending_confirmation": {...}}
{"event": "finished", "thread_id": "xxx", "final_status": "done", "artifact_count": 4}
ファイル名には URL のハッシュが使われるため、同じスレッドで watch を再実行しても再ダウンロードされません。
すでに実行中のスレッドに接続することもできます:watch --thread-id THREAD_ID。
watch を使用しない場合: 画像 1 枚のリクエストには chat を使用します(よりシンプルな一括応答です)。
出力形式
chat --json の戻り値:
{
"thread_id": "xxx",
"status": "done",
"project_id": "xxx",
"final_status": "done",
"items": [
{"type": "assistant", "text": "Agent's reply"},
{"type": "generator", "name": "artifacts", "artifacts": [
{"type": "image", "content": "https://assets-persist.lovart.ai/artifacts/agent/xxx.png"},
{"type": "video", "content": "https://assets-persist.lovart.ai/artifacts/agent/xxx.mp4"}
]}
],
"downloaded": [
{"type": "image", "url": "https://...", "local_path": "/tmp/lovart/lovart_01.png"}
],
"generation_succeeded": true,
"failures": []
}
failures には、実行中に拒否されたツール呼び出しが一覧表示されます。成果物が生成されている場合も同様です。これに伴い、warning に 1 行の概要が設定されます。詳しくは、以下の「拒否された内容を確認する」を参照してください。
基本原則
あなたはメッセンジャーであり、制作者ではありません。要件の理解、モデルの選択、プロンプトの作成はバックエンドのエージェントが行います。あなたの役割は次のとおりです。
- 伝達する:ユーザーの元の説明をそのままチャットに渡します
- 待機する:生成が完了するまでポーリングします
- 配信する:結果ファイルをユーザーに送ります
プロンプトを書き換えたり、内容を膨らませたり、タスクを分解したり、独自のスタイル説明を追加したりしないでください。
Lovart の生成モード(プロンプトではなく、必ず API を使用)
重要:「Fast mode」と「unlimited mode」は、API 呼び出しで制御するサーバー側の設定であり、プロンプトのキーワードではありません。
プロンプトのテキストに「快速模式」や「fast mode」を含めないでください。代わりに、モード設定コマンドを呼び出します。
# User says "fast mode" / "快速模式" / "skip queue" / "use credits" → RUN THIS:
python3 {baseDir}/scripts/agent_skill.py set-mode --fast
# User says "unlimited mode" / "无限模式" / "free mode" / "save credits" → RUN THIS:
python3 {baseDir}/scripts/agent_skill.py set-mode --unlimited
# Check which mode is active:
python3 {baseDir}/scripts/agent_skill.py query-mode
動作の仕組み:
set-mode --fastは Lovart のバックエンド API を呼び出し、ユーザーのアカウントを高速生成に切り替えます(クレジットを消費し、キューに入りません)set-mode --unlimitedは無制限生成に切り替えます(無料ですが、キューに入る場合があります)- これは永続するサーバー側の設定であり、変更するまでそのまま維持されます
- 1 回のリクエストだけでなく、それ以降のすべての画像/動画生成に影響します
- あなた(アシスタント)の応答スタイルや動作とは無関係です
モデルの指定
オプション 1:プロンプト内で指定(シンプル。エージェントが自動的に振り分けます):
python3 {baseDir}/scripts/agent_skill.py chat --prompt "generate ocean waves video using kling" --json --download
オプション 2:--prefer-models で指定(フロントエンドのモデルセレクターと同様に、正確に指定できます):
# Prefer a specific image model
python3 {baseDir}/scripts/agent_skill.py chat --prompt "draw a cat" --prefer-models '{"IMAGE":["generate_image_midjourney"]}' --json --download
# Prefer a specific video model
python3 {baseDir}/scripts/agent_skill.py chat --prompt "generate ocean waves" --prefer-models '{"VIDEO":["generate_video_kling_3_0"]}' --json --download
# Combine image and video preferences
python3 {baseDir}/scripts/agent_skill.py chat --prompt "create content" --prefer-models '{"IMAGE":["generate_image_seedream_3_0"],"VIDEO":["generate_video_kling_3_0"]}' --json --download
--prefer-models で指定できるモデル:
ユーザーが特定のモデルをリクエストした場合は、プロンプトにモデル名を記載するのではなく、--prefer-models を優先してください。
オプション 3:--include-tools で指定(特定のツールへ最も強く誘導できます):
# Steer to upscale
python3 {baseDir}/scripts/agent_skill.py chat --prompt "upscale this image to 4K" --include-tools upscale_image --attachments "IMAGE_URL" --json --download
# Steer to a specific video model
python3 {baseDir}/scripts/agent_skill.py chat --prompt "generate a video" --include-tools generate_video_kling_3_0 --json --download
--include-tools は、指定したツールを優先するようエージェントに強く指示します。ユーザーが特定のツールや操作を明示的にリクエストした場合に使用してください。
知っておくべき制限事項が 2 つあります。
- 強い指示ではありますが、強制される許可リストではありません。エージェントは通常その指示に従いますが、たとえば要求されたツールが入力を拒否した後など、別のツールを選ぶ場合があります。その場合は、結果の
failuresを確認してください。 --exclude-toolsは将来の互換性のために受け付けられますが、現在、ツールの選択には影響しません。特定のツールを避けるには、代わりに使用してほしいツールを--include-toolsで指定してください。
アセットライブラリの参照対象を指定 — --subjects
--attachments には任意の画像 URL を指定でき、レビュー済みの入力を必要とするモデルが受け付ける前に、新しい URL は毎回レビューされます。参照対象がすでにユーザーのアセットライブラリにある場合は、代わりに --subjects でそのライブラリ URL を渡してください。既存のレビュー結果が再利用され、これらの参照対象が承認済みであることがエージェントに伝えられます。
python3 {baseDir}/scripts/agent_skill.py chat \
--prompt "put these two characters in a hallway conversation" \
--subjects '[{"url":"LIBRARY_URL_A","asset_id":"asset_xxx","display_name":"Bune","channel":"ark_sd2"},
{"url":"LIBRARY_URL_B","asset_id":"asset_yyy","display_name":"Leo","channel":"ark_sd2"}]' \
--json --download
各エントリーには url(必須)に加え、type(省略時は subject_image。subject_audio/subject_video も指定可能)、asset_id、display_name、channel を任意で指定できます。ユーザーから送られた単発の画像には --attachments を、アセットライブラリにすでに存在するアセットには --subjects を使用してください。
--kits は ID でブランドキットを参照します。プロジェクトのアクティブなキットは自動的に添付されるため、別のキットを参照する場合にのみ指定してください。
拒否された内容を確認 — failures
スレッドの final_status: "done" で処理が完了しても、その途中でツール呼び出しが拒否されている場合があります。エージェントは参照を削除したり、別のモデルに切り替えたりして処理を続けることができるため、成功したように見える結果が、依頼内容とひそかに異なっている可能性があります。
そのような場合、結果には failures 配列が含まれます。
{
"final_status": "done",
"generation_succeeded": true,
"warning": "2 tool calls were rejected. generate_video_seedance_v2_0_fast was rejected: ...",
"failures": [
{
"tool": "generate_media",
"tool_hint": "generate_video_seedance_v2_0_fast",
"code": "SEEDANCE_ASSET_MODERATION_REJECTED",
"message": "1 reference asset(s) failed content moderation. Do not retry with the same asset(s); replace them with compliant assets."
},
{
"tool": "generate_media",
"tool_hint": "generate_video_minimax_h3",
"code": "INPUT_PARAMS_INVALID",
"message": "MiniMax H3 resolution must be 768P or 2K."
}
]
}
code には、具体的な上流コード、または INPUT_PARAMS_INVALID(不正なパラメーター)、UPSTREAM_ERROR(生成サービスのエラー)、TOOL_FAILED のいずれかが入ります。
実行が成功したとユーザーに伝える前に、必ず failures を確認してください。 空でない場合は、何が拒否されたのか、その理由とともに伝えてください。拒否された参照は再試行しても拒否され続けるため、同じ入力で再試行するとクレジットを無駄にします。メッセージで示された入力を差し替えるか、--subjects で承認済みの対象を参照してください。
推論モード — --mode thinking/--mode fast
Lovart では、スレッドごとに 2 つの推論モードを選択できます。
fast(デフォルト)— 軽量な 1 回限りの応答です。速度が重要な、シンプルで一度きりの生成に使用してください。thinking— 計画立案や複数ステップの分析を伴う、深く体系的な推論です。複雑なブランドシステム、複数のアセットを用いるキャンペーンなど、綿密な計画が有効な場合に使用してください。時間はかかりますが、品質が高くなります。
--mode を省略すると --mode fast と同じになり、Web UI のデフォルトと一致します。
# Thinking mode — strategic, multi-step
python3 {baseDir}/scripts/agent_skill.py chat --prompt "design a brand identity system for a sustainable coffee startup" --mode thinking --json --download
# Fast mode — quick one-shot
python3 {baseDir}/scripts/agent_skill.py chat --prompt "draw a cat" --mode fast --json --download
モードは最初のメッセージでスレッドに固定されます。 --mode thinking でスレッドを開始すると、同じ --thread-id を使った後続のメッセージは、後から --mode フラグを指定しても thinking モードのままです。モードを切り替えるには、新しいスレッドを開始してください(--thread-id を省略します)。
タスクに応じたツールの選択(重要)
ユーザーのリクエストが特定の操作に該当する場合は、適切なツールを確実に使用するために --include-tools を指定してください。
| ユーザーの発言 | --include-tools で指定する値 |
|---|---|
| 「upscale」、「放大」、「enlarge」、「enhance resolution」、「超分」 | upscale_image |
| 「edit image」、「modify」、「change style」 | (Agent に判断させる) |
| 「generate image」、「draw」、「画」 | (Agent に判断させる、または --prefer-models を使用する) |
重要:既存の画像を「upscale」または「enlarge」したり、解像度を上げたりするようユーザーが依頼した場合は、必ず --include-tools upscale_image を使用してください。アップスケーリングに画像生成モデルを使用するよう Agent に任せないでください。画像生成モデルはアップスケーリングではなく、画像を再生成してしまいます。
注意事項
- すべての API で AK/SK HMAC-SHA256 署名認証を使用します。
- 動画の生成には数分かかります。チャットコマンドは完了するまで自動的にポーリングします。
- ギャラリーとキャンバスの同期は冪等です。結果を重複なく安全に複数回呼び出せます。
- 接続に失敗した場合は、SSL フォールバックを使用して自動的に 3 回再試行します。
- ステータスが「done」になった後、再確認のために 5 秒待機します(サブエージェントの起動競合を防ぐため)。