一覧へ

API(拡張の説明と決まり事)

このページは、汎用蛇太郎へ機能を足すときの公式の決まり事である。チャットAIには、このページの内容(またはこのページのURL)と、追加したい機能のプロンプトを一緒に渡す。ここだけで窓口と見本が揃う。

ここは APIキーの話ではない。プログラムが蛇太郎へ頼む窓口の呼び方と、短い動く見本である。宛先のAIサービス名は固定しない。利用者が選ぶ。

本体の Python は書き換えない。新しい通信経路も、秘密鍵の直書きもしない。返答は、選んだファイルへ上書き保存するだけで動く完成本文だけにする(説明文や Markdown の囲みは不要)。

ボタンか、パネルか

YOUボタンの決まり

パネルの決まり(表示の限界)

短い動く見本:YOUボタン(button.js)

追加したボタンのフォルダにある button.js を、次で全文置換する例である。

async function run(button, jarvis) {
  jarvis.root.replaceChildren();
  const input = document.createElement("input");
  input.placeholder = "一文を書く";
  const go = document.createElement("button");
  go.textContent = "言い換える";
  jarvis.root.append(input, go);

  const once = async () => {
    const text = String(input.value || "").trim();
    if (!text) {
      jarvis.show([], "文を書いてから押してください");
      return;
    }
    go.disabled = true;
    try {
      if (jarvis.closed()) {
        jarvis.show([], "中断しました");
        return;
      }
      const reply = String(await jarvis.ask("次を短く言い換えて:" + text) || "").trim();
      if (jarvis.closed()) return;
      if (!reply) {
        jarvis.show([], "言い換えに失敗しました");
        return;
      }
      jarvis.show([{ title: reply }], "言い換え");
      await jarvis.speak("言い換えました");
    } catch (err) {
      jarvis.show([], "言い換えに失敗しました");
    } finally {
      go.disabled = false;
    }
  };

  go.addEventListener("click", () => { once(); });
  input.addEventListener("keydown", (ev) => {
    if (ev.key === "Enter") once();
  });
}

短い動く見本:パネル(panel.html / panel.js)

狭い枠でも崩れにくい、畳める1行の例である。panel.html

<!-- 幅およそ300px。枠の外へ出さない。長い文は折り返す。 -->
<details class="sub" open>
  <summary>いまの一言</summary>
  <p id="one-line">まだありません</p>
</details>

panel.js(読み込まれたとき一度動く)

(() => {
  const line = document.getElementById("one-line");
  if (!line) return;
  line.textContent = "この枠の外へはみ出さず、長い文は折り返してください。";
})();

チャットAIへの渡し方