コマンド一覧
| コマンド | 説明 |
|---|---|
| !register <名前> <テキスト> | テキストコマンドを登録 |
| !register_code <名前> <コード> | コードコマンドを登録 |
| !smart_register <名前> <説明> | 自然言語からコードコマンドを自動生成 |
| !<コマンド名> [引数...] | 登録したコマンドを実行 |
テキストコマンドの登録
!register
コマンドで、シンプルなテキストコマンドを登録できます。
!register <コマンド名> <テキスト>
!register hello こんにちは!
上記を実行すると、hello
というコマンドが登録されます。その後、チャットで
hello
と入力すると、Botが「こんにちは!」と返答します。
コードコマンドの登録
!register_code
コマンドで、Pythonコードを含むコマンドを登録できます。
!register_code <コマンド名> <コード>
シンプルな例
!register_code greet print("Hello, World!")
バッククォートを使った例
!register_code dice
```python
import random
print(random.randint(1, 6))
```
変数を使った例
!register_code welcome
```python
print(f"ようこそ、{username}さん!")
```
スマートコマンド登録
!smart_register
コマンドで、自然言語の説明からPythonコードを自動生成してコマンドを登録できます。
!smart_register <コマンド名> <説明>
!smart_register dice 1から6までのランダムな数字を出力する
上記を実行すると、LLMが説明に基づいてPythonコードを生成し、diceコマンドとして登録します。
!smart_register fortune おみくじを引いて運勢を表示する。大吉、吉、中吉、小吉、凶があり、それぞれに合ったメッセージも表示する
- コードは自動生成されるため、意図した動作にならない場合があります
- 必要に応じて
!register_codeで手動修正できます - 生成されたコードはビルトイン関数(
llm,mget等)を使用できます
コマンドの実行
コードコマンドの実行
登録したコードコマンドは
! プレフィックスを付けて実行します。
!dice
引数を渡すこともできます:
!mycommand arg1 arg2 arg3
テキストコマンドの実行
登録したテキストコマンドは、プレフィックスなしでコマンド名を入力するだけで実行できます。
hello
利用可能な変数
コードコマンド内では、以下の変数が自動的に利用可能です:
| 変数名 | 説明 |
|---|---|
| username | コマンドを実行したユーザーの表示名 |
| user_id | コマンドを実行したユーザーのDiscord ID |
| user_avatar | コマンドを実行したユーザーのアバターID |
| args |
コマンドに渡された引数のリスト(args[0],
args[1]...でアクセス)
|
!register_code profile
```python
print(f"ユーザー名: {username}")
print(f"ユーザーID: {user_id}")
```
!register_code add
```python
result = int(args[0]) + int(args[1])
print(f"{args[0]} + {args[1]} = {result}")
```
実行:
!add 10 20
出力: 10 + 20 = 30
ビルトイン関数
コードコマンド内では、以下の関数がデフォルトで利用可能です:
| 関数 | 説明 |
|---|---|
| llm(prompt: str) | LLM(AI)にプロンプトを送信し、応答テキストを取得 |
| mget(query: str, top_k: int = 6) | メモリからセマンティック検索で関連情報を取得(RAG) |
| mllm(prompt: str, top_k: int = 6) | メモリを参照してLLMで回答を生成(RAG対応LLM) |
| automemory(text: str) | テキストから情報を自動抽出してメモリに保存 |
| cs(s: str) | 文字列をDiscordのコードブロック(```)で囲む |
また、requestsライブラリがインポート済みです。
!register_code ask
```python
question = " ".join(args)
answer = llm(question)
print(answer)
```
実行:
!ask 今日の天気は?
!register_code code
```python
code = "print('Hello, World!')"
print(cs(code))
```
出力:
```print('Hello, World!')```(コードブロックとして表示)
!register_code ip
```python
response = requests.get("https://api.ipify.org?format=json")
data = response.json()
print(f"IP: {data['ip']}")
```
メモリ関連関数
ねるちゃんは会話の内容をメモリに保存し、後から検索・参照できます。
!register_code search
```python
query = " ".join(args)
results = mget(query, 5) # 上位5件を検索
for r in results:
print(f"- {r['content']} (score: {r['score']:.2f})")
```
実行:
!search 好きな食べ物
!register_code recall
```python
question = " ".join(args)
# メモリを参照しながらLLMが回答
answer = mllm(question, 6)
print(answer)
```
実行:
!recall Aさんの好きな食べ物は?
!register_code remember
```python
text = " ".join(args)
count = automemory(text)
print(f"{count}件の情報をメモリに保存しました")
```
実行:
!remember Aさんはカレーが好きで、Bさんはラーメンが好き
コードの書き方
コードは以下の形式で記述できます:
!register_code test print("hello")
!register_code test `print("hello")`
!register_code test
```python
print("hello")
```
!register_code test
```
print("hello")
```
注意事項
- 同じ名前のコマンドを重複して登録することはできません
- コードコマンドはサンドボックス環境で実行されます
- 実行結果は標準出力(
print文)で出力されます