feat: Поиск - with it on the assistant searches DuckDuckGo itself and answers from what it found; without it, it cannot. «Думал N сек.»

This commit is contained in:
redtea committed 2026-10-16 10:32:33 +03:00
1 parent fa62f2c5b6
commit 9bf30b281e
8 files changed
+921 -7

No files matched your search

+8
View File
@@ -363,6 +363,10 @@ const aiAgent = `
Режим агента: ты сам ведёшь задачу шаг за шагом. В каждом ответе - коротко, что делаешь, и ровно одно действие. Получив результат, решай следующий шаг.
Когда задача решена (или решить нельзя) - ответь итогом без блоков действий.`
const aiSearch = `
Поиск в интернете включён: блок ` + "```search\nзапрос\n```" + ` - панель найдёт его в DuckDuckGo и пришлёт результаты (заголовок, адрес, отрывок) следующим сообщением.
Ищи активно: свежие данные, версии, документация, тексты ошибок, всё, в чём не уверен, - сначала поиск, потом ответ со ссылками на найденное. Одно действие за ответ. Ссылки не выдумывай.`
const aiThink = `
Режим размышления: начни ответ строкой ::думаю:: и подумай - разбери задачу, варианты и риски; затем строка ::ответ:: и сам ответ.`
@@ -524,6 +528,7 @@ func (s *Server) handleAIChat(w http.ResponseWriter, r *http.Request) {
Context string `json:"context"`
Agent bool `json:"agent"`
Think bool `json:"think"`
Search bool `json:"search"`
Chat int64 `json:"chat"`
}
if err := json.NewDecoder(http.MaxBytesReader(w, r.Body, 1<<20)).Decode(&in); err != nil || (in.Message == "" && in.Result == "") {
@@ -546,6 +551,9 @@ func (s *Server) handleAIChat(w http.ResponseWriter, r *http.Request) {
if in.Agent {
system += aiAgent
}
if in.Search {
system += aiSearch
}
if in.Think {
system += aiThink
// Models heed the last words most: the reminder goes there too (not