問い合わせ v1

examples/inquiry/temporal/inquiry.ja.flow · dandori doc

お客さまの問い合わせの種類を Jev が選び、その確信度も返す。エージェントは問い合わせを読んで注文番号と要点を取り出し、種類も読む。Jev が種類に十分な確信を持てないときは、エージェントが読んだ種類を使う。受け持つ窓口と最初の返事までの時間は規則が決め、返事の下書きは別のエージェントが書き、窓口のシステムに起票する。選ぶことは Jev が、読むことと書くことはエージェント(読むのは会社が自分で動かしているモデル、書くのは Claude)が、決めることは規則が受け持つ。Temporal 向けの版:Jev とエージェントは生成したアクティビティで、Jev は TypeSafe の API キー(TYPESAFE_API_KEY)で呼び、読み取りは Open Responses を話す会社の Ollama に(`url`)、下書きはワーカーが持つ鍵で Claude に送る。規則はワークフローと同じワーカーでローカルアクティビティとして動き、その結果はマーカーとして履歴に残る。起票は自分で書くアクティビティ

flow
on failureon 迷い, failuresome 注文IDnoneon failure問い合わせ v162 読み = 読み取る(…)agent · gpt-oss:20b · http://ollama.internal:11434/v1retry 2 times every 10 seconds · timeout 1 minute64 手作業 = 起票する(…)自分で書くタスクretry 2 times every 5 secondstimeout, failure → ワークフローが失敗する!65 succeed チケットID = 手作業.チケットID, 窓口 = 総合67 種類 = 種類を選ぶ(…)jev · jev-1.13.0 · confidence 0.8 else 迷いretry 2 times every 1 second · timeout 10 seconds68 let 種類 = 読み.種類69 判定 = 振り分け(…)rule 問い合わせの振り分け.rule · localtimeout, failure → ワークフローが失敗する!70 let 件名 = "{種類}の問い合わせ"71 match 読み.注文ID72 let 件名 = "{種類}の問い合わせ(注文 {注文ID})"74 下書き = 下書きする(…)agent claude · claude-sonnet-5timeout 1 minute75 let 下書き = none76 票 = 起票する(…)自分で書くタスクretry 2 times every 5 secondstimeout, failure → ワークフローが失敗する!77 succeed チケットID = 票.チケットID, 窓口 = 判定.窓口

呼び出し

行呼び出し呼ぶものリトライタイムアウト失敗したとき
62読み = 読み取る(…)agent · gpt-oss:20b · http://ollama.internal:11434/v110 秒おきに 2 回(failure・timeout)1 分timeout・failure → 63 行目
64手作業 = 起票する(…)自分で書くタスク・key5 秒おきに 2 回(failure・timeout)—timeout・failure → ワークフローが失敗する
67種類 = 種類を選ぶ(…)jev · jev-1.13.0 · confidence 0.8 else 迷い1 秒おきに 2 回(failure・timeout)10 秒迷い・timeout・failure → 68 行目
69判定 = 振り分け(…)規則 問い合わせの振り分け.rule(Temporal ではローカルアクティビティ)1 秒後と 2 秒後の 2 回(failure)—timeout・failure → ワークフローが失敗する
74下書き = 下書きする(…)agent claude · claude-sonnet-5—1 分timeout・failure → 75 行目
76票 = 起票する(…)自分で書くタスク・key5 秒おきに 2 回(failure・timeout)—timeout・failure → ワークフローが失敗する

終わり方

行終わり方
65succeed チケットID = 手作業.チケットID, 窓口 = 総合
77succeed チケットID = 票.チケットID, 窓口 = 判定.窓口