@@ -66,6 +66,13 @@ export async function askAI(params: ChatParams): Promise<ChatResult> {
6666 `質問に答える際には、ユーザーが閲覧しているセクションの内容を特に考慮してください。`
6767 ) ;
6868 prompt . push ( `` ) ;
69+ prompt . push (
70+ `質問への回答はユーザー向けのメッセージに加えて、ドキュメント自体を改訂するという形でも可能です。`
71+ ) ;
72+ prompt . push (
73+ `質問内容とドキュメントの内容の関連性が深く、比較的長めの解説をしたい場合、またはドキュメントへの補足がしたい場合は、そちらの形式での回答を検討してください。`
74+ ) ;
75+ prompt . push ( `` ) ;
6976 prompt . push ( `# ドキュメント` ) ;
7077 prompt . push ( `` ) ;
7178 for ( const section of sectionContent ) {
@@ -157,6 +164,27 @@ export async function askAI(params: ChatParams): Promise<ChatResult> {
157164 prompt . push (
158165 " - 水平線(---)はシステムが区切りとして認識するので、ユーザーへの回答中に水平線を使用することはできません。"
159166 ) ;
167+ prompt . push (
168+ "- ユーザーへのメッセージの最後の行の次には水平線 --- を出力してください。"
169+ ) ;
170+ prompt . push (
171+ "- それ以降の行に、ドキュメントの一部を改訂したい場合はその差分を"
172+ ) ;
173+ prompt . push ( "<<<<<<< SEARCH" ) ;
174+ prompt . push ( "修正したい元の文章の塊(一字一句違わずに)" ) ;
175+ prompt . push ( "=======" ) ;
176+ prompt . push ( "修正後の新しい文章の塊" ) ;
177+ prompt . push ( ">>>>>>> REPLACE" ) ;
178+ prompt . push ( "の形式で出力してください。" ) ;
179+ prompt . push (
180+ " - 複数箇所改訂したい場合は上の形式の出力を複数回繰り返してください。"
181+ ) ;
182+ prompt . push (
183+ " - ドキュメントにテキストを追加したい場合は追加したい箇所の前後のテキストを含めて出力してください。"
184+ ) ;
185+ prompt . push (
186+ " - セクションid、セクション見出し、およびコードブロックの内側を編集することはできません。それ以外の文章のみを編集してください。"
187+ ) ;
160188 console . log ( prompt ) ;
161189
162190 try {
@@ -170,6 +198,14 @@ export async function askAI(params: ChatParams): Promise<ChatResult> {
170198 targetSectionId = introSectionId ( path ) ;
171199 }
172200 const responseMessage = text . split ( / - { 3 , } / ) [ 1 ] . trim ( ) ;
201+ const diffMatch = text
202+ . split ( / - { 3 , } / ) [ 2 ]
203+ . matchAll (
204+ / < { 3 , } \s * S E A R C H \n ( [ \s \S ] * ?) \n = { 3 , } \n ( [ \s \S ] * ?) \n > { 3 , } \s * R E P L A C E / g
205+ ) ;
206+ const diff : { search : string ; replace : string } [ ] = diffMatch
207+ ? Array . from ( diffMatch , ( m ) => ( { search : m [ 1 ] , replace : m [ 2 ] } ) )
208+ : [ ] ;
173209 const newChat = await addChat ( path , targetSectionId , [
174210 { role : "user" , content : userQuestion } ,
175211 { role : "ai" , content : responseMessage } ,
0 commit comments