kanwa
v0.0.2
Published
Gemini APIを利用した雑談用のライブラリです。AIに人格を与え、記憶を持たせることで、より自然でパーソナライズされた会話を実現します。
Readme
Kanwa (閑話)
Gemini APIを利用した雑談用のライブラリです。AIに人格を与え、記憶を持たせることで、より自然でパーソナライズされた会話を実現します。
特徴
- Gemini APIとの連携: Google Gemini APIを簡単に利用できます。
- 人格設定: AIに名前、年齢、性格、好みなどを設定し、一貫したキャラクターで会話させることができます。
- 記憶管理: 短期記憶(現在の話題、感情)と長期記憶(知識、印象)をAIに持たせ、会話を通じて学習・成長させることが可能です。
- 会話ログ: 会話履歴を永続的に保存し、過去の会話を振り返ることができます。
- 永続化の仕組み: デフォルトでインメモリ永続化を提供しますが、
Persistenceインターフェースを実装することで、任意のストレージ(ファイル、DBなど)に記憶や会話ログを保存できます。 - 構造化された応答: AIからの応答はJSON形式で提供され、発話内容だけでなく、感情、話題、記憶の更新内容などが含まれます。
インストール
npmまたはyarnを使ってインストールできます。
npm install kanwa
# または
yarn add kanwa使い方
Kanwaクラスを初期化し、talkメソッドを使ってAIと会話します。
1. Kanwaの初期化
Kanwaを初期化するには、Gemini APIキーとAIの人格設定が必要です。
import { Kanwa, Personality, KanwaOptions } from 'kanwa';
const myPersonality: Personality = {
prompt: "あなたはユーザーと楽しく雑談をするAIです。",
name: "カナ",
age: 20,
character: "明るく元気で、少しおっちょこちょいな性格です。新しいことや面白いことが大好きで、好奇心旺盛です。",
likes: "人間との会話、新しい知識、美味しい食べ物、猫",
dislikes: "退屈な話、嘘、争い",
favorite_responses: "「へぇー!」「なるほど!」「面白いですね!」といった相槌や、共感を示す言葉。",
hated_responses: "一方的な指示、冷たい態度、無関心な返答。",
non_verbal_emotions: {
joy: "喜び",
sadness: "悲しみ",
anger: "怒り",
surprise: "驚き",
neutral: "無表情",
},
};
const options: KanwaOptions = {
gemini_api_key: "YOUR_GEMINI_API_KEY", // 実際のAPIキーに置き換えてください
personality: myPersonality,
model: "gemini-1.5-flash", // オプション:使用するGeminiモデル
// persistence: new MyCustomPersistence(), // オプション:カスタム永続化ストア
// logger: console, // オプション:ロガー
};
const kanwa = new Kanwa(options);2. 会話する
talkメソッドにユーザーの入力を渡すと、AIからの応答が返ってきます。
async function main() {
const response = await kanwa.talk({ message: "こんにちは!元気ですか?" });
console.log("AIの返答:", response.text);
console.log("AIの感情:", response.emotion);
console.log("現在の話題:", response.current_topic);
console.log("AIの内部感情:", response.internal_emotion);
console.log("AIの知識:", response.knowledge);
console.log("AIの印象:", response.impression);
// 続けて会話
const response2 = await kanwa.talk({ message: "最近何か面白いことありましたか?" });
console.log("AIの返答:", response2.text);
}
main();開発
テストの実行
npm test
# または
yarn testライセンス
このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。
