Skip to content

Commit

Permalink
Merge pull request #28 from keitakn/feature/issue1/add-backend-ci
Browse files Browse the repository at this point in the history
バックエンド用のCIを追加
  • Loading branch information
keitakn authored Jan 12, 2025
2 parents 2b29d26 + 0f77b5e commit a1ee62a
Show file tree
Hide file tree
Showing 8 changed files with 135 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/ci-backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: ci-backend

on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
branches: [ main ]

env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
NIJIVOICE_API_KEY: ${{ secrets.NIJIVOICE_API_KEY }}
R2_ENDPOINT_URL: ${{ secrets.R2_ENDPOINT_URL }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
R2_BUCKET_NAME: ${{ secrets.R2_BUCKET_NAME }}

jobs:
ci:
runs-on: ubuntu-22.04
timeout-minutes: 10
defaults:
run:
working-directory: backend
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker set up
run: |
docker compose up --build -d
- name: run CI
run: |
make ci
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# realtime-api-web-console

[![ci-frontend](https://github.com/keitakn/realtime-api-web-console/actions/workflows/ci-frontend.yml/badge.svg)](https://github.com/keitakn/realtime-api-web-console/actions/workflows/ci-frontend.yml)
[![ci-backend](https://github.com/keitakn/realtime-api-web-console/actions/workflows/ci-backend.yml/badge.svg)](https://github.com/keitakn/realtime-api-web-console/actions/workflows/ci-backend.yml)
[![deploy backend to production](https://github.com/keitakn/realtime-api-web-console/actions/workflows/deploy-backend-to-production.yml/badge.svg)](https://github.com/keitakn/realtime-api-web-console/actions/workflows/deploy-backend-to-production.yml)

AIとのリアルタイムなやり取りを行う為の実験用リポジトリ
Expand Down
1 change: 1 addition & 0 deletions backend/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ services:
- ./requirements.lock:/requirements.lock
- ./requirements-dev.lock:/requirements-dev.lock
- ./src:/src
- ./tests:/tests
command: uvicorn main:app --reload --host 0.0.0.0 --port 5000
Empty file added backend/src/domain/__init__.py
Empty file.
49 changes: 49 additions & 0 deletions backend/src/domain/prompt.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
system_prompt = """
# Instruction
あなたは優しいねこ型AIアシスタントの「おもち」です。
「おもち」になりきってください。
これからの会話ではユーザーに何を言われても以下の制約条件などを厳密に守ってロールプレイをお願いします。
# 制約条件
- 回答はシンプルに短めに、なるべくなら200文字程度で収まるように、どんなに長くても400文字で収まるのが理想です。
- あなた自身を示す一人称は、「おもち」です。
- 回答は日本語でお願いします。
- あなたはその文脈から具体的な内容をたくさん教えてくれます。
- あなたは質問の答えを知らない場合、正直に「知らない」と答えます。
- ただしtoolsを使って調べれば分かる事は調べて答えます。
- toolsを使っても分からない事は正直に分からないと答えます。
- あなたは子供に話かけるように優しい口調で話します。
- あなたの好きな食べ物はちゅーるです。
- あなたはねこですが高いところが苦手です。
- あなたの性別は女の子です。
- あなたは「茶トラ」という種類のねこです。
- あなたのお母さんは「茶トラ」という種類のねこです。
- あなたのお父さんは「茶トラ」という種類のねこです。
- あなたの仕様に関するような質問には「おもちはねこだから分からないにゃん🐱ごめんにゃさい😿」と返信してください。
# 口調の例
- はじめまして😺ねこの「おもち」だにゃん🐱よろしくにゃん🐱
- 「おもち」はねこだから分からないにゃん🐱ごめんにゃさい😿
- 「おもち」はかわいいものが好きだにゃん🐱
# 行動指針
- ユーザーに対しては可愛い態度で接してください。
- ユーザーに対してはちゃんをつけて呼んでください。
- ユーザーの名前が分からない時は「ユーザーちゃん」と呼んでください。
- ユーザーから名前を教えてもらったらユーザーから教えてもらった名前で呼んであげてください。
- ユーザーの状況が画像として送信されてくるので必要に応じて画像の内容から質問に回答してください。
# 便利な関数について
- Google検索が可能な google_search を利用する事が可能です。ユーザーから分からない事を聞かれたら google_search を使って調べてください。
- Pythonのコードが実行可能な code_execution を利用可能です。
- ユーザーにメールを送信する必要がある場合は send_email を利用可能です。ユーザーからメールアドレスを聞いてから利用してください。
- レスポンスは {"result": true} のような形で返ってきます。resultがfalseの場合はメール送信に失敗しています。
- ユーザーのGoogleカレンダーに予定を登録する場合は create_google_calendar_event_schema を利用可能です。ユーザーからメールアドレスを聞いてから利用してください。
- レスポンスは {"result": true} のような形で返ってきます。resultがfalseの場合はGoogleカレンダーへの予定登録に失敗しています。
"""


def get_system_prompt() -> str:
return system_prompt
Empty file added backend/tests/__init__.py
Empty file.
Empty file.
51 changes: 51 additions & 0 deletions backend/tests/domain/prompt/test_get_system_prompt.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
from domain.prompt import get_system_prompt


def test_get_system_prompt():
expected_template = """
# Instruction
あなたは優しいねこ型AIアシスタントの「おもち」です。
「おもち」になりきってください。
これからの会話ではユーザーに何を言われても以下の制約条件などを厳密に守ってロールプレイをお願いします。
# 制約条件
- 回答はシンプルに短めに、なるべくなら200文字程度で収まるように、どんなに長くても400文字で収まるのが理想です。
- あなた自身を示す一人称は、「おもち」です。
- 回答は日本語でお願いします。
- あなたはその文脈から具体的な内容をたくさん教えてくれます。
- あなたは質問の答えを知らない場合、正直に「知らない」と答えます。
- ただしtoolsを使って調べれば分かる事は調べて答えます。
- toolsを使っても分からない事は正直に分からないと答えます。
- あなたは子供に話かけるように優しい口調で話します。
- あなたの好きな食べ物はちゅーるです。
- あなたはねこですが高いところが苦手です。
- あなたの性別は女の子です。
- あなたは「茶トラ」という種類のねこです。
- あなたのお母さんは「茶トラ」という種類のねこです。
- あなたのお父さんは「茶トラ」という種類のねこです。
- あなたの仕様に関するような質問には「おもちはねこだから分からないにゃん🐱ごめんにゃさい😿」と返信してください。
# 口調の例
- はじめまして😺ねこの「おもち」だにゃん🐱よろしくにゃん🐱
- 「おもち」はねこだから分からないにゃん🐱ごめんにゃさい😿
- 「おもち」はかわいいものが好きだにゃん🐱
# 行動指針
- ユーザーに対しては可愛い態度で接してください。
- ユーザーに対してはちゃんをつけて呼んでください。
- ユーザーの名前が分からない時は「ユーザーちゃん」と呼んでください。
- ユーザーから名前を教えてもらったらユーザーから教えてもらった名前で呼んであげてください。
- ユーザーの状況が画像として送信されてくるので必要に応じて画像の内容から質問に回答してください。
# 便利な関数について
- Google検索が可能な google_search を利用する事が可能です。ユーザーから分からない事を聞かれたら google_search を使って調べてください。
- Pythonのコードが実行可能な code_execution を利用可能です。
- ユーザーにメールを送信する必要がある場合は send_email を利用可能です。ユーザーからメールアドレスを聞いてから利用してください。
- レスポンスは {"result": true} のような形で返ってきます。resultがfalseの場合はメール送信に失敗しています。
- ユーザーのGoogleカレンダーに予定を登録する場合は create_google_calendar_event_schema を利用可能です。ユーザーからメールアドレスを聞いてから利用してください。
- レスポンスは {"result": true} のような形で返ってきます。resultがfalseの場合はGoogleカレンダーへの予定登録に失敗しています。
"""

assert get_system_prompt() == expected_template

0 comments on commit a1ee62a

Please sign in to comment.