sn-image-base について
SenseNova-Skills の基盤レイヤーにあたるスキルで、画像生成・編集・認識とテキスト最適化のコマンドラインツールを提供します。入力を前処理せず、バックエンドサービスを呼び出します。
主な機能
- 01プロンプトから画像を生成
- 021 枚以上の参照画像を編集
- 03VLM による複数画像の分析
- 04LLM によるテキストの最適化
- 05コマンドラインまたは環境変数でサービスを設定
- 06テキストまたは JSON 形式で結果を出力
活用シーン
- 01テキストプロンプトから画像を生成
- 02参照画像を使って画像を編集
- 03ビジョンモデルで画像内容を分析
- 04LLM を使ってテキストを最適化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ opensensenova/ sensenova-skills --skill sn-image-baseインストール後、Claude Code で/sn-image-baseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitattributes.gitignoreREADME_CN.mdREADME.mdrequirements.txtreferences/api_spec.mdscripts/.python-versionextract_json.pypyproject.tomlruff.tomlsn_agent_runner.pyscripts/sn_image_base/__init__.pyconfigs.pyexceptions.pyscripts/sn_image_base/generation/__init__.pynano_banana.pyopenai_image.pysensenova.pyscripts/sn_image_base/generation/core/__init__.pyclient_base.pyscripts/sn_image_base/llm/__init__.pyanthropic_adapter.pychat_completions_adapter.pyllm_adapter.pyscripts/sn_image_base/utils/__init__.pyerror_utils.pyhttpx_client.pyscripts/sn_image_base/vlm/__init__.pyutils.pyvlm_adapter.py詳細
sn-image-base
依存関係のインストール
pip install -r requirements.txt
概要
sn-image-base は SenseNova-Skills プロジェクトのベースレイヤースキル(ティア 0)で、次の 4 つの低レベルツールを提供します。
sn-image-generate:画像生成(text-to-image-no-enhance API を呼び出します)sn-image-edit:SenseNova U1.5 Lite による画像編集(/images/editsを呼び出します)sn-image-recognize:画像認識(VLM を使用して画像の内容を分析します)sn-text-optimize:テキスト最適化(LLM を使用してテキストを処理します)
このスキルは入力の前処理を一切行わず、バックエンドサービスを呼び出して結果を返すだけです。
ツール一覧
sn-image-generate
text-to-image-no-enhance API を呼び出す画像生成ツールです。
--prompt は必須です。それ以外のパラメーターはすべて任意です。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
--prompt | string | 必須 | 画像生成用のプロンプトテキスト |
--negative-prompt | string | "" | ネガティブプロンプト |
--image-size | string | 2k | 画像サイズのプリセット(大文字と小文字を区別しません)。推奨値:2k。4k は sensenova-u1.5-lite でサポートされていますが、ほかの SenseNova 画像モデルでは拒否される場合があります。それ以外の値では status=failed になります。 |
--aspect-ratio | string | 16:9 | アスペクト比。例:1:1、16:9、9:16 |
--seed | int | None | 再現可能な生成に使用する乱数シード |
--unet-name | string | None | UNet モデル名を指定します |
--api-key | string | SN_IMAGE_GEN_API_KEY -> SN_API_KEY | API キー(CLI 引数が優先されます。すべて空の場合は MissingApiKeyError が発生します) |
--base-url | string | SN_IMAGE_GEN_BASE_URL -> SN_BASE_URL | API のベース URL(CLI 引数が優先されます) |
--poll-interval | float | 5.0 | ポーリング間隔(秒) |
--timeout | float | 300.0 | タイムアウト(秒) |
--insecure | flag | False | TLS 検証を無効にします |
--save-path | Path | 自動生成 | 保存先のパス |
SenseNova の画像リクエストでは、デフォルトで watermark=false が明示的に送信されます。sensenova-u1-fast と sensenova-u1.5-lite の両方がサポートされています。U1.5 Lite はネイティブ 4K 出力にも対応しています。このウォーターマークなし機能は現在、無料のパブリックベータ版として提供されており、将来的に有料になる可能性があります。
sn-image-edit
/images/edits エンドポイントを介して、SenseNova U1.5 Lite で 1 枚以上の参照画像を編集します。ローカルパスは Data URL に変換され、HTTP(S) URL と Data URL はそのまま渡されます。
python scripts/sn_agent_runner.py sn-image-edit \
--prompt "Change the background to a snowy mountain" \
--images source.png reference.png \
--save-path edited.png
編集リクエストでは、公式のデフォルト値 n=1、size=auto、watermark=false、prompt_extend=true、response_format=url が使用されます。
sn-image-recognize
VLM(視覚言語モデル)を使用して画像の内容を分析する画像認識ツールです。複数の画像入力に対応しています。
--images と --user-prompt(または --user-prompt-path)は必須です。それ以外のパラメーターには、3 段階のデフォルト値(CLI > 環境変数 > 組み込みデフォルト値)が使用されます。
| パラメーター | 型 | 組み込みデフォルト値 | 環境変数 | 説明 |
|---|---|---|---|---|
--api-key | string | ハードコードされたデフォルト値なし | SN_VISION_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY | チャット実行時の API キー。すべて未設定の場合は MissingApiKeyError が発生します |
--base-url | string | SN_CHAT_BASE_URL のデフォルト値 | SN_VISION_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URL | ビジョンプロバイダーのベース URL。共有チャット/グローバルプロバイダーにフォールバックします |
--model | string | sensenova-6.8-flash-lite | SN_VISION_MODEL -> SN_CHAT_MODEL | ビジョンに対応したモデル名 |
--vlm-type | string | openai-completions | SN_VISION_TYPE -> SN_CHAT_TYPE | チャットプロトコルの種類を上書きします |
--user-prompt-path | string | None | - | ローカルファイルパス。--user-prompt とは同時に指定できません |
--system-prompt-path | string | None | - | ローカルファイルパス。--system-prompt とは同時に指定できません |
--vlm-type で指定できる値:
openai-completions:OpenAI 互換の/v1/chat/completionsインターフェースanthropic-messages:Anthropic Messages の/v1/messagesインターフェース
sn-text-optimize
LLM(言語モデル)を使用してテキストコンテンツを最適化するツールです。画像入力には対応していません。
--user-prompt(または --user-prompt-path)は必須です。それ以外のパラメーターには、3段階のデフォルト値が適用されます(CLI > 環境変数 > 組み込みデフォルト値)。
| パラメーター | 型 | 組み込みデフォルト値 | 環境変数 | 説明 |
|---|---|---|---|---|
--api-key | string | ハードコードされたデフォルト値なし | SN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY | チャット実行時の API キーです。すべて未設定の場合、MissingApiKeyError が発生します |
--base-url | string | SN_CHAT_BASE_URL のデフォルト値 | SN_TEXT_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URL | テキストプロバイダーのベース URL です。共有チャット/グローバルプロバイダーにフォールバックします |
--model | string | sensenova-6.8-flash-lite | SN_TEXT_MODEL -> SN_CHAT_MODEL | テキストモデル名です |
--llm-type | string | openai-completions | SN_TEXT_TYPE -> SN_CHAT_TYPE | チャットプロトコルの種類を上書きします |
--user-prompt-path | string | None | - | ローカルファイルパスです。--user-prompt と同時には指定できません |
--system-prompt-path | string | None | - | ローカルファイルパスです。--system-prompt と同時には指定できません |
--llm-type で指定できる値:
openai-completions:OpenAI 互換の/v1/chat/completionsインターフェースanthropic-messages:Anthropic Messages の/v1/messagesインターフェース
VLM と LLM の比較
| ツール | モデルの種類 | 画像入力 | インターフェースの種類を指定するパラメーター |
|---|---|---|---|
sn-image-recognize | VLM(視覚言語モデル) | あり。複数の画像に対応 | --vlm-type |
sn-text-optimize | LLM(言語モデル) | なし。テキストのみ | --llm-type |
使用方法
すべてのツールは、統一された sn_agent_runner.py エントリーポイントを通じて呼び出します。
# Image generation (only prompt required; api-key/base-url have defaults)
python scripts/sn_agent_runner.py sn-image-generate \
--prompt "..."
# Image generation (override base-url)
python scripts/sn_agent_runner.py sn-image-generate \
--prompt "..." \
--base-url "https://custom-endpoint.com/v1"
# Image generation (explicitly override api-key)
python scripts/sn_agent_runner.py sn-image-generate \
--prompt "..." \
--api-key "sk-xxx"
# Image recognition (VLM) - minimal call (uses built-in Sensenova defaults)
python scripts/sn_agent_runner.py sn-image-recognize \
--user-prompt "Describe the image" \
--images "path/to/image.png"
# Image recognition (VLM) - override to Anthropic Claude API compatible (messages interface)
python scripts/sn_agent_runner.py sn-image-recognize \
--user-prompt "Describe the image" \
--images "path/to/image.png" \
--api-key "sk-ant-xxx" \
--base-url "https://api.anthropic.com" \
--model "claude-sonnet-4-6" \
--vlm-type "anthropic-messages"
# Text optimization (LLM) - minimal call (uses built-in Sensenova defaults)
python scripts/sn_agent_runner.py sn-text-optimize \
--user-prompt "Optimize the text: ..."
# Text optimization (LLM) - override to Anthropic Claude API compatible (messages interface)
python scripts/sn_agent_runner.py sn-text-optimize \
--user-prompt "Optimize the text: ..." \
--api-key "sk-ant-xxx" \
--base-url "https://api.anthropic.com" \
--model "claude-sonnet-4-6" \
--llm-type "anthropic-messages"
デフォルトのパラメーター動作
sn-image-generate の認証パラメーターには、次のデフォルト動作が適用されます。
| パラメーター | デフォルト値 | 上書き方法 | 説明 |
|---|---|---|---|
--base-url | SN_IMAGE_GEN_BASE_URL -> SN_BASE_URL | --base-url "..." | CLI 引数が優先されます |
--api-key | SN_IMAGE_GEN_API_KEY -> SN_API_KEY | --api-key "..." | CLI 引数が優先されます。すべての値が空の場合、MissingApiKeyError が発生します |
sn-image-recognize と sn-text-optimize では、次の優先順位が適用されます:CLI 引数 > ツール固有の環境変数 > 共通の SN_CHAT_* 環境変数 > グローバルな SN_* 環境変数 > 組み込みデフォルト値。
| パラメーター | 組み込みデフォルト値 | Vision 環境変数 | Text 環境変数 |
|---|---|---|---|
--api-key | なし(指定必須) | SN_VISION_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY | SN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY |
--base-url | https://token.sensenova.cn/v1 | SN_VISION_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URL | SN_TEXT_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URL |
--model | sensenova-6.8-flash-lite | SN_VISION_MODEL -> SN_CHAT_MODEL | SN_TEXT_MODEL -> SN_CHAT_MODEL |
--vlm-type / --llm-type | openai-completions | SN_VISION_TYPE -> SN_CHAT_TYPE | SN_TEXT_TYPE -> SN_CHAT_TYPE |
api_key の解決順序(優先度の高い順):CLI の --api-key > ツール固有のキー(SN_VISION_API_KEY/SN_TEXT_API_KEY)> SN_CHAT_API_KEY > SN_API_KEY。すべて未設定の場合、MissingApiKeyError が発生します。
CLI または環境変数で指定が必須なのは --api-key のみです。ベース URL、モデル、インターフェースの種類には共通のチャットデフォルト値が使用されます。
エージェント設定との統合
エージェントは、手動入力なしで openclaw.json からパラメーターを自動的に読み取れます。
| CLI パラメーター | openclaw.json のフィールド | 例 |
|---|---|---|
--base-url | providers.<name>.baseUrl | https://api.anthropic.com |
--llm-type | providers.<name>.api | anthropic-messages / openai-completions |
--vlm-type | providers.<name>.api | anthropic-messages / openai-completions |
--model | providers.<name>.models[].id | claude-sonnet-4-6 |
--api-key | providers.<name>.apiKey または環境変数 | sk-cp-... |
注:--llm-type と --vlm-type は同じ providers.<name>.api フィールドを共有し、それぞれ LLM ツールと VLM ツールで使用されます。
provider.api とインターフェースタイプの対応関係:
| api の値 | 対応する --llm-type / --vlm-type | エンドポイントパス |
|---|---|---|
anthropic-messages | anthropic-messages | /v1/messages |
openai-completions | openai-completions | /v1/chat/completions |
openai-responses | (将来の拡張) | /responses |
base-url とインターフェースタイプの対応関係
API タイプごとに、base-url の形式に関する要件が異なります。
| タイプ | --llm-type / --vlm-type | 推奨される base-url | コードで追加されるパス | 最終 URL の例 |
|---|---|---|---|---|
| LLM | openai-completions | https://token.sensenova.cn/v1 | /chat/completions | https://token.sensenova.cn/v1/chat/completions |
| LLM | anthropic-messages | https://api.anthropic.com/v1 | /messages | https://api.anthropic.com/v1/messages |
| VLM | openai-completions | https://token.sensenova.cn/v1 | /chat/completions | https://token.sensenova.cn/v1/chat/completions |
| VLM | anthropic-messages | https://api.anthropic.com/v1 | /messages | https://api.anthropic.com/v1/messages |
注:
- 推奨されるチャット用 base URL には、たとえば
/v1のように、プロバイダー API のバージョンパスを含めます。 - 互換性のため、設定されたチャット用 base URL にパスがない場合、ランナーは
/v1/chat/completionsまたは/v1/messagesを追加します。 - 設定されたチャット用 base URL に
/v1などのパスがすでに含まれている場合、ランナーは/chat/completionsまたは/messagesのみを追加します。 - Gemini の
/v1beta/openaiのように、/v1以外のバージョン付きパスを使用するプロバイダーもあります。
出力形式
すべてのツールで、次の 2 種類の出力形式を使用できます。
--output-format text(デフォルト):プレーンテキストの結果を出力します--output-format json:statusとelapsed_seconds(秒単位の実行時間、小数点以下 2 桁に丸めた値)を含む JSON を出力します
sn-image-recognize と sn-text-optimize の JSON 出力には、有効な実行時設定を確認できるよう、model、base_url、interface_type も含まれます。
{
"status": "ok",
"result": "...",
"model": "sensenova-6.8-flash-lite",
"base_url": "https://token.sensenova.cn/v1",
"interface_type": "openai-completions",
"elapsed_seconds": 1.23
}
失敗時:
{
"status": "failed",
"error": "error message",
"elapsed_seconds": 0.05
}
入出力仕様
詳細は references/api_spec.md を参照してください。