このコミットが含まれているのは:
2025-08-17 00:18:26 +09:00
コミット 1eaebaa724
3個のファイルの変更191行の追加20行の削除
+49 -2
ファイルの表示
@@ -1,3 +1,7 @@
"""
DB の queries テーブルにたまってゐるクエリを AI に処理させ answers テーブルに流す.
"""
from __future__ import annotations
import random
@@ -6,12 +10,16 @@ from typing import TypedDict
from nizika_ai.config import DB
from nizika_ai.consts import AnswerType, Character, Platform
from nizika_ai.models import Answer, AnsweredFlag, Query, User
from nizika_ai.models import Answer, AnsweredFlag, Query
from nizika_ai.talk import Talk
def main (
) -> None:
"""
メーン処理
"""
queries: list[Query] = Query.where ('answered', False).get ()
if not queries:
return
@@ -48,6 +56,21 @@ def add_answer (
user_name: str | None,
histories: list[History],
) -> None:
"""
AI の返答を DB に積む.
Parameters
----------
query: Query
クエリ
character: Character
返答するキャラクタ
user_name: str | None
クエリの主
histories: list[History]
履歴
"""
message: str | list[dict[str, str | dict[str, str]]]
if query.image_url:
message = [{ 'type': 'text', 'text': query.content },
@@ -69,10 +92,19 @@ def add_answer (
def add_answered_flags (
answer: Answer,
) -> None:
"""
返答済フラグを付与する.
Parameters
----------
answer: Answer
返答モデル
"""
answer_type: AnswerType
try:
answer_type = AnswerType (answer.answer_type)
except Exception:
except (TypeError, ValueError):
return
if answer_type in (AnswerType.YOUTUBE_REPLY,):
@@ -85,6 +117,17 @@ def add_answered_flag (
answer: Answer,
platform: Platform,
) -> None:
"""
返答済フラグを付与する.
Parameters
----------
answer: Answer
返答モデル
platform: Platform
プラットフォーム
"""
answered_flag = AnsweredFlag ()
answered_flag.answer_id = answer.id
answered_flag.platform = platform.value
@@ -93,6 +136,10 @@ def add_answered_flag (
class History (TypedDict):
"""
会話履歴の 1 要素;ユーザや AI の発話を簡易に保持する型
"""
role: str
content: str