revert: always send full document text in case chat context
Özet-önce yaklaşımı, kullanıcı uzun bir mesaj/belge verdiğinde sohbet ekranında soruna yol açtığı için geri alındı — chatMessage yine her zaman belgelerin tam extracted_text'ini sistem promptuna gömüyor. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
bcc78ce304
commit
ea5211e05d
@@ -3,12 +3,6 @@ import { supabase } from '../lib/supabase';
|
|||||||
import { AuthenticatedRequest } from '../middleware/auth';
|
import { AuthenticatedRequest } from '../middleware/auth';
|
||||||
import { callOllama, streamOllama, ChatMsg } from '../lib/aiClient';
|
import { callOllama, streamOllama, ChatMsg } from '../lib/aiClient';
|
||||||
|
|
||||||
// Kullanıcı bir belgenin TAM metnine bakılmasını açıkça istediğinde (örn. "belgenin
|
|
||||||
// tamamına bak", "tam metni incele") sistem promptuna extracted_text'in tamamı
|
|
||||||
// eklenir. Aksi halde sadece analiz özeti (summary_json) gönderilir — hem promptu
|
|
||||||
// küçültüp yanıtı hızlandırır hem gereksiz token maliyetini önler.
|
|
||||||
const FULL_TEXT_TRIGGER = /tam metn|belgenin tamam|dosyanın tamam|tüm metn|tüm belge|belgeyi (baştan sona|detaylı)/i;
|
|
||||||
|
|
||||||
// İlk mesajdan kısa bir başlık üretir (Claude/ChatGPT'nin yaptığı gibi). Başarısız
|
// İlk mesajdan kısa bir başlık üretir (Claude/ChatGPT'nin yaptığı gibi). Başarısız
|
||||||
// olursa null döner — çağıran taraf bu durumda varsayılan başlığı korur, asıl
|
// olursa null döner — çağıran taraf bu durumda varsayılan başlığı korur, asıl
|
||||||
// sohbet cevabını etkilemez. Hem dava-dosyası-siz "Yeni Sohbet" (cases.kind='chat')
|
// sohbet cevabını etkilemez. Hem dava-dosyası-siz "Yeni Sohbet" (cases.kind='chat')
|
||||||
@@ -104,20 +98,12 @@ export const chatMessage = async (req: AuthenticatedRequest, res: Response) => {
|
|||||||
.order('created_at', { ascending: true })
|
.order('created_at', { ascending: true })
|
||||||
.limit(10);
|
.limit(10);
|
||||||
|
|
||||||
// Belge bağlamı: varsayılan olarak sadece dosya adları + analiz özeti gönderilir.
|
// Belge bağlamı: her zaman TAM metin gönderiliyor (özet-önce yaklaşımı, kullanıcı
|
||||||
// Kullanıcı açıkça tam metni isterse (FULL_TEXT_TRIGGER) extracted_text'lerin
|
// uzun bir mesaj/belge verdiğinde sohbet ekranında soruna yol açtığı için geri alındı).
|
||||||
// tamamı eklenir. Bu, her mesajda tüm belgelerin tam metnini gömüp promptu
|
|
||||||
// şişirmek yerine, çoğu soruda çok daha küçük ve hızlı bir istek üretir.
|
|
||||||
const wantsFullText = FULL_TEXT_TRIGGER.test(content);
|
|
||||||
let documentContext = '';
|
let documentContext = '';
|
||||||
if (documents && documents.length > 0) {
|
if (documents && documents.length > 0) {
|
||||||
if (wantsFullText) {
|
documentContext = '\n\nDOSYAYA AİT BELGELER:\n' +
|
||||||
documentContext = '\n\nDOSYAYA AİT BELGELERİN TAM METNİ:\n' +
|
documents.map(d => `--- ${d.filename} ---\n${d.extracted_text}`).join('\n\n');
|
||||||
documents.map(d => `--- ${d.filename} ---\n${d.extracted_text}`).join('\n\n');
|
|
||||||
} else {
|
|
||||||
documentContext = '\n\nDOSYAYA AİT BELGELER: ' + documents.map(d => d.filename).join(', ') +
|
|
||||||
'\n(Aşağıda bu belgelerin analiz özeti var. Kullanıcı tam metni isterse — "belgenin tamamına bak" gibi — tam metni isteyebileceğini kendisine hatırlatabilirsin.)';
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
documentContext = '\n\nBu dosyaya henüz hiçbir belge yüklenmemiştir. Genel hukuki bilgiyle cevap ver, ama bunu kullanıcıya açıkça belirt.';
|
documentContext = '\n\nBu dosyaya henüz hiçbir belge yüklenmemiştir. Genel hukuki bilgiyle cevap ver, ama bunu kullanıcıya açıkça belirt.';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user