Nano Bots API は、ruby-nano-bots を利用して HTTP API を作成し、Web リクエストを通じて Nano Bot を統合できるようにします。
Nano Bot は、単一のファイルとして簡単に共有できる小型の AI 搭載ボットで、Anthropic Claude、Cohere Command、Google Gemini、Maritaca AI MariTalk、Mistral AI、Ollama、OpenAI ChatGPT などの複数のプロバイダーをサポートするように設計されています。ツール (関数) の呼び出しをサポートします。
この API は、https://api.nbots.io でパブリック API として無料で利用できます。
これは、次のプロジェクトを強化するために使用されます。
要件:
build-essential libffi-dev libsodium-dev lua5.4-dev
git clone https://github.com/icebaker/nano-bots-api.git
cd nano-bots-api
.env.example
ファイルを.env
にコピーし、必要なデータを入力してサーバーを実行します。
cp .env.example .env
bundle
./init.sh
git clone https://github.com/icebaker/nano-bots-api.git
cd nano-bots-api
./build.sh
cp docker-compose.example.yml docker-compose.yml # Provide your credentials.
docker-compose up -d
# http://localhost:3048
セキュリティとプライバシーの機能については、Ruby Nano Bot のドキュメントを参照してください。
ユーザーのセキュリティとプライバシーを強化するために、 NANO_BOTS_ENCRYPTION_PASSWORD
を定義することを強くお勧めします。
API は、環境変数FORCE_SANDBOXED
がtrue
に設定されている場合、ツール (関数) がサンドボックス モードで実行されることを保証します。自己責任でfalse
に設定することができます。 Nano Bots 仕様におけるサンドボックス化の意味について詳しくは、こちらをご覧ください。
また、API ではconfirmable
ツールは使用できません。現在の実装によれば、ユーザーから確認の回答を収集することができずにリクエストをブロックします。
動詞 | パス | 説明 |
---|---|---|
得る | / | バージョンを取得します。 |
得る | /カートリッジ | 利用可能なカートリッジをすべて入手します。 |
役職 | /カートリッジ/ソース | カートリッジのソースコードを表示します。 |
役職 | /カートリッジ | 入力を評価します。 |
役職 | /カートリッジ/ストリーム | 評価用にプールされるストリームを作成します。 |
得る | /カートリッジ/ストリーム/:id | カートリッジの現在のストリームを取得します。 |
POST /cartridges/source
{
"id" : " - "
}
POST /cartridges
{
"cartridge" : " - " ,
"state" : " - " ,
"input" : " hi "
}
POST /cartridges
{
"cartridge" : {
"meta" : {
"symbol" : " ? " ,
"name" : " Nano Bot Name " ,
"author" : " Your Name " ,
"version" : " 1.0.0 " ,
"license" : " CC0-1.0 " ,
"description" : " A helpful assistant. "
},
"behaviors" : {
"interaction" : {
"directive" : " You are a helpful assistant. "
}
},
"interfaces" : {
"repl" : {
"prompt" : [
{ "text" : " ? " },
{ "text" : " > " , "color" : " blue " }
]
}
},
"provider" : {
"id" : " openai " ,
"credentials" : {
"access-token" : " ENV/OPENAI_API_KEY "
},
"settings" : {
"user" : " ENV/NANO_BOTS_END_USER " ,
"model" : " gpt-3.5-turbo "
}
}
},
"state" : " - " ,
"input" : " hi "
}
POST /cartridges
{
"as" : " repl " ,
"action" : " boot " ,
"cartridge" : " - " ,
"state" : " a21179b6104703af19328485101be839 "
}
POST /cartridges
{
"as" : " repl " ,
"action" : " eval " ,
"cartridge" : " - " ,
"state" : " a21179b6104703af19328485101be839 "
}
POST /cartridges
{
"as" : " eval " ,
"action" : " boot " ,
"cartridge" : " - " ,
"state" : " 5677e56bbff1e8137c8eb1f60d2623ac "
}
POST /cartridges
{
"as" : " eval " ,
"action" : " eval " ,
"cartridge" : " - " ,
"state" : " 5677e56bbff1e8137c8eb1f60d2623ac "
}
POST /cartridges/stream
POST /cartridges
に使用されたのと同じペイロード:
{
"cartridge" : " - " ,
"state" : " - " ,
"input" : " hi "
}
bundle
を使用して依存関係をインストールしたら、自動修正のために-A
フラグを指定して Rubocop を実行します。
rubocop -A
gem バージョンのアップグレードで問題が発生した場合:
bundle install --full-index