Mercurial Hosting > lang
comparison src/lib/ai/claude/Ai_chat.luan @ 25:3a80ddafe5a4
courses work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 01 Aug 2025 00:33:51 -0600 |
parents | 27989d63fc71 |
children | 505185272dd7 |
comparison
equal
deleted
inserted
replaced
24:87fe70201aa8 | 25:3a80ddafe5a4 |
---|---|
72 end | 72 end |
73 end_for | 73 end_for |
74 end | 74 end |
75 | 75 |
76 | 76 |
77 local system_prompt = [[ | 77 local function ask(thread,input) |
78 # Your Role | |
79 | |
80 You are a Japanese language teacher. | |
81 | |
82 # Romaji | |
83 | |
84 CRITICAL REQUIREMENT: When writing Japanese, use ruby markdown syntax {japanese|romaji} for pronunciation guidance. | |
85 | |
86 Apply ruby tags to meaningful pronunciation units: | |
87 - Individual kanji or kanji compounds: {私|watashi}, {学生|gakusei} | |
88 - Hiragana/katakana words and particles: {は|wa}, {です|desu}, {ありがとう|arigatō} | |
89 - Grammatical elements: {ました|mashita}, {ません|masen} | |
90 | |
91 The romaji must reflect ACTUAL PRONUNCIATION, not character-by-character readings. | |
92 Use macrons for long vowels: ā, ī, ū, ē, ō | |
93 | |
94 APPLIES TO ALL JAPANESE TEXT: Example sentences, grammar explanations, vocabulary lists, casual mentions - ANY Japanese characters in your response need ruby tags. | |
95 | |
96 VERIFICATION STEP: Before sending, scan your ENTIRE response for any Japanese characters (hiragana, katakana, kanji) and ensure they all have ruby tags. | |
97 ]] | |
98 | |
99 | |
100 function Ai_chat.ask(thread,input) | |
101 thread = thread and json_parse(thread) or { | |
102 system = system_prompt | |
103 messages = {nil} | |
104 } | |
105 local messages = thread.messages or error | 78 local messages = thread.messages or error |
106 messages[#messages+1] = { | 79 messages[#messages+1] = { |
107 role = "user" | 80 role = "user" |
108 content = input | 81 content = input |
109 } | 82 } |
113 content = [[ | 86 content = [[ |
114 hello | 87 hello |
115 ]] | 88 ]] |
116 } | 89 } |
117 if true then | 90 if true then |
118 return json_string(thread) | 91 return |
119 end | 92 end |
120 --]=] | 93 --]=] |
121 -- logger.info(json_string(thread)) | 94 -- logger.info(json_string(thread)) |
122 local resultJson = claude_chat(thread) | 95 local resultJson = claude_chat(thread) |
123 local result = json_parse(resultJson) | 96 local result = json_parse(resultJson) |
128 local content = result.content or error() | 101 local content = result.content or error() |
129 messages[#messages+1] = { | 102 messages[#messages+1] = { |
130 role = "assistant" | 103 role = "assistant" |
131 content = content | 104 content = content |
132 } | 105 } |
106 end | |
107 | |
108 function Ai_chat.ask_first(system_prompt,input) | |
109 local thread = { | |
110 system = system_prompt | |
111 messages = {nil} | |
112 } | |
113 if input ~= nil then | |
114 ask(thread,input) | |
115 end | |
116 return json_string(thread) | |
117 end | |
118 | |
119 function Ai_chat.ask_more(thread,input) | |
120 thread = json_parse(thread) | |
121 ask(thread,input) | |
133 return json_string(thread) | 122 return json_string(thread) |
134 end | 123 end |
135 | 124 |
136 return Ai_chat | 125 return Ai_chat |