Skip to content

kanare-dev/book-info-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Book Info Chat

自然言語で会話しながら本を探せるチャットボット。

LLMがユーザーの意図を理解し、CiNii Books APIを使って本を検索・推薦します。

Demo

デモ1 デモ2 デモ3

技術スタック

  • フロントエンド: Next.js (TypeScript, Tailwind CSS)
  • バックエンド: FastAPI (Python)
  • LLM: OpenAI API (GPT-4o-mini, Tool Calling)
  • 書籍検索: CiNii Books API

セットアップ

必要なもの

  • Python 3.11+
  • Node.js 18+
  • CiNii アプリケーションID
  • OpenAI API キー

APIキーの取得

  1. CiNii アプリケーションID

  2. OpenAI API キー

バックエンド

cd backend

# 環境変数を設定
cp .env.example .env
# .env を編集して CINII_APP_ID と OPENAI_API_KEY を設定

# 仮想環境を作成
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 依存関係をインストール
pip install -r requirements.txt

# 起動
uvicorn app.main:app --reload

フロントエンド

cd frontend

# 依存関係をインストール
npm install

# 起動
npm run dev

アクセス

API エンドポイント

POST /chat

チャットメッセージを処理し、本を推薦します。

{
  "message": "プログラミングの入門書を探しています",
  "history": []
}

POST /books/search

CiNii Books APIで書籍を検索します。

{
  "query": "Python",
  "author": "オライリー",
  "count": 10
}

プロジェクト構造

book-info-chat/
├── backend/
│   ├── app/
│   │   ├── main.py          # FastAPIエントリポイント
│   │   ├── config.py        # 環境変数設定
│   │   ├── routers/
│   │   │   ├── books.py     # 書籍検索エンドポイント
│   │   │   └── chat.py      # チャットエンドポイント
│   │   ├── services/
│   │   │   ├── cinii.py     # CiNii API連携
│   │   │   └── chat.py      # OpenAI Tool Calling
│   │   └── schemas/         # Pydanticモデル
│   ├── requirements.txt
│   └── .env.example
│
├── frontend/
│   ├── src/
│   │   ├── app/
│   │   │   └── page.tsx     # メインチャットUI
│   │   ├── components/
│   │   │   ├── ChatMessage.tsx
│   │   │   └── ChatInput.tsx
│   │   └── lib/
│   │       └── api.ts       # API呼び出し
│   └── .env.local.example
│
└── blueprint.md             # 設計ドキュメント

About

ChatBot using CiNii API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors