nyasukun's picture
initial commit for security survey
3966c38
import chainlit as cl
from models.chat_state import get_security_survey_initial_state
from workflows.chat_workflow import survey_chainlit_app
from security_checklist import security_checklist
from langchain_core.messages import HumanMessage
@cl.on_message
async def process_user_message(message: cl.Message):
"""ユーザメッセージを処理する"""
state = cl.user_session.get("state")
# ユーザ回答をmessagesに追加(HumanMessage型で追加)
state['messages'].append(HumanMessage(content=message.content))
# ワークフロー進行 - process_input -> display_question or survey_complete
state = await survey_chainlit_app.ainvoke(state)
cl.user_session.set("state", state)
@cl.on_chat_start
async def start():
"""チャット開始時の処理"""
# 初期状態を作成
state = get_security_survey_initial_state(security_checklist)
cl.user_session.set("state", state)
# 最初の質問を表示するためにワークフローを呼び出す
await process_user_message(cl.Message(content="セキュリティチェックリスト診断を開始したい"))
@cl.set_chat_profiles
async def chat_profile():
return [
cl.ChatProfile(
name="security_survey_bot",
markdown_description="セキュリティチェックリスト診断を行うチャットボットです。",
icon="public/icon.jpg",
starters=[
cl.Starter(
label="セキュリティチェックリスト診断",
message="セキュリティチェックリスト診断を開始したい"
),
]
)
]