mcpField
S
sn-image-base

sn-image-base

github.com/opensensenovaクリエイティブ・メディア6.0k185 回インストール2 日前に更新
リポジトリ

sn-image-base について

SenseNova-Skills の基盤レイヤーにあたるスキルで、画像生成・編集・認識とテキスト最適化のコマンドラインツールを提供します。入力を前処理せず、バックエンドサービスを呼び出します。

主な機能

  1. 01プロンプトから画像を生成
  2. 021 枚以上の参照画像を編集
  3. 03VLM による複数画像の分析
  4. 04LLM によるテキストの最適化
  5. 05コマンドラインまたは環境変数でサービスを設定
  6. 06テキストまたは JSON 形式で結果を出力

活用シーン

  1. 01テキストプロンプトから画像を生成
  2. 02参照画像を使って画像を編集
  3. 03ビジョンモデルで画像内容を分析
  4. 04LLM を使ってテキストを最適化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/opensensenova/sensenova-skills --skill sn-image-base

インストール後、Claude Code で/sn-image-baseを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitattributes
.gitignore
README_CN.md
README.md
requirements.txt
references/
api_spec.md
scripts/
.python-version
extract_json.py
pyproject.toml
ruff.toml
sn_agent_runner.py
scripts/sn_image_base/
__init__.py
configs.py
exceptions.py
scripts/sn_image_base/generation/
__init__.py
nano_banana.py
openai_image.py
sensenova.py
scripts/sn_image_base/generation/core/
__init__.py
client_base.py
scripts/sn_image_base/llm/
__init__.py
anthropic_adapter.py
chat_completions_adapter.py
llm_adapter.py
scripts/sn_image_base/utils/
__init__.py
error_utils.py
httpx_client.py
scripts/sn_image_base/vlm/
__init__.py
utils.py
vlm_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 は必須です。それ以外のパラメーターはすべて任意です。

パラメーター型デフォルト説明
--promptstring必須画像生成用のプロンプトテキスト
--negative-promptstring""ネガティブプロンプト
--image-sizestring2k画像サイズのプリセット(大文字と小文字を区別しません)。推奨値:2k。4k は sensenova-u1.5-lite でサポートされていますが、ほかの SenseNova 画像モデルでは拒否される場合があります。それ以外の値では status=failed になります。
--aspect-ratiostring16:9アスペクト比。例:1:1、16:9、9:16
--seedintNone再現可能な生成に使用する乱数シード
--unet-namestringNoneUNet モデル名を指定します
--api-keystringSN_IMAGE_GEN_API_KEY -> SN_API_KEYAPI キー(CLI 引数が優先されます。すべて空の場合は MissingApiKeyError が発生します)
--base-urlstringSN_IMAGE_GEN_BASE_URL -> SN_BASE_URLAPI のベース URL(CLI 引数が優先されます)
--poll-intervalfloat5.0ポーリング間隔(秒)
--timeoutfloat300.0タイムアウト(秒)
--insecureflagFalseTLS 検証を無効にします
--save-pathPath自動生成保存先のパス

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-keystringハードコードされたデフォルト値なしSN_VISION_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEYチャット実行時の API キー。すべて未設定の場合は MissingApiKeyError が発生します
--base-urlstringSN_CHAT_BASE_URL のデフォルト値SN_VISION_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URLビジョンプロバイダーのベース URL。共有チャット/グローバルプロバイダーにフォールバックします
--modelstringsensenova-6.8-flash-liteSN_VISION_MODEL -> SN_CHAT_MODELビジョンに対応したモデル名
--vlm-typestringopenai-completionsSN_VISION_TYPE -> SN_CHAT_TYPEチャットプロトコルの種類を上書きします
--user-prompt-pathstringNone-ローカルファイルパス。--user-prompt とは同時に指定できません
--system-prompt-pathstringNone-ローカルファイルパス。--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-keystringハードコードされたデフォルト値なしSN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEYチャット実行時の API キーです。すべて未設定の場合、MissingApiKeyError が発生します
--base-urlstringSN_CHAT_BASE_URL のデフォルト値SN_TEXT_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URLテキストプロバイダーのベース URL です。共有チャット/グローバルプロバイダーにフォールバックします
--modelstringsensenova-6.8-flash-liteSN_TEXT_MODEL -> SN_CHAT_MODELテキストモデル名です
--llm-typestringopenai-completionsSN_TEXT_TYPE -> SN_CHAT_TYPEチャットプロトコルの種類を上書きします
--user-prompt-pathstringNone-ローカルファイルパスです。--user-prompt と同時には指定できません
--system-prompt-pathstringNone-ローカルファイルパスです。--system-prompt と同時には指定できません

--llm-type で指定できる値:

  • openai-completions:OpenAI 互換の /v1/chat/completions インターフェース
  • anthropic-messages:Anthropic Messages の /v1/messages インターフェース

VLM と LLM の比較

ツールモデルの種類画像入力インターフェースの種類を指定するパラメーター
sn-image-recognizeVLM(視覚言語モデル)あり。複数の画像に対応--vlm-type
sn-text-optimizeLLM(言語モデル)なし。テキストのみ--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-urlSN_IMAGE_GEN_BASE_URL -> SN_BASE_URL--base-url "..."CLI 引数が優先されます
--api-keySN_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_KEYSN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY
--base-urlhttps://token.sensenova.cn/v1SN_VISION_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URLSN_TEXT_BASE_URL -> SN_CHAT_BASE_URL -> SN_BASE_URL
--modelsensenova-6.8-flash-liteSN_VISION_MODEL -> SN_CHAT_MODELSN_TEXT_MODEL -> SN_CHAT_MODEL
--vlm-type / --llm-typeopenai-completionsSN_VISION_TYPE -> SN_CHAT_TYPESN_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-urlproviders.<name>.baseUrlhttps://api.anthropic.com
--llm-typeproviders.<name>.apianthropic-messages / openai-completions
--vlm-typeproviders.<name>.apianthropic-messages / openai-completions
--modelproviders.<name>.models[].idclaude-sonnet-4-6
--api-keyproviders.<name>.apiKey または環境変数sk-cp-...

注:--llm-type と --vlm-type は同じ providers.<name>.api フィールドを共有し、それぞれ LLM ツールと VLM ツールで使用されます。

provider.api とインターフェースタイプの対応関係:

api の値対応する --llm-type / --vlm-typeエンドポイントパス
anthropic-messagesanthropic-messages/v1/messages
openai-completionsopenai-completions/v1/chat/completions
openai-responses(将来の拡張)/responses

base-url とインターフェースタイプの対応関係

API タイプごとに、base-url の形式に関する要件が異なります。

タイプ--llm-type / --vlm-type推奨される base-urlコードで追加されるパス最終 URL の例
LLMopenai-completionshttps://token.sensenova.cn/v1/chat/completionshttps://token.sensenova.cn/v1/chat/completions
LLManthropic-messageshttps://api.anthropic.com/v1/messageshttps://api.anthropic.com/v1/messages
VLMopenai-completionshttps://token.sensenova.cn/v1/chat/completionshttps://token.sensenova.cn/v1/chat/completions
VLManthropic-messageshttps://api.anthropic.com/v1/messageshttps://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 を参照してください。

コメント