模型优化
This commit is contained in:
+18
-1
@@ -19,7 +19,8 @@ import (
|
||||
|
||||
const (
|
||||
defaultActivationPrompt = `判断用户问题是否需要联网搜索。
|
||||
仅当问题涉及实时信息、新闻、价格、当前版本、近期事件、政策、网页资料核验,或用户明确要求“查一下/搜索/联网/最新”时调用 search。
|
||||
当问题涉及实时信息、新闻、价格、当前版本、近期事件、政策、网页资料核验,或用户明确要求“查一下/搜索/联网/最新”时调用 search。
|
||||
当用户询问“历史上的今天”、某日期历史事件、需要按当前日期动态确定查询词的常识资料时,也应调用 search;如果联网无结果,主模型会回退到自身知识库回答并说明来源。
|
||||
普通知识、闲聊、代码推理、已有上下文可回答的问题不要调用。`
|
||||
defaultBaseURL = "https://api.duckduckgo.com/"
|
||||
defaultTimeout = 10
|
||||
@@ -287,6 +288,22 @@ func BuildErrorContext(query string, err error) string {
|
||||
return fmt.Sprintf("工具路由尝试联网搜索但失败。用户问题:%s\n错误:%v\n请向用户说明联网搜索失败,不要编造搜索结果。", query, err)
|
||||
}
|
||||
|
||||
func BuildFallbackContext(config ProfileConfig, query string, routeReason string, err error) string {
|
||||
var b strings.Builder
|
||||
fmt.Fprintf(&b, "工具路由尝试联网搜索,但没有可用的搜索结果。当前搜索源: %s(%s)。\n", config.Name, config.Provider)
|
||||
fmt.Fprintf(&b, "搜索时间: %s\n", time.Now().Format("2006-01-02 15:04:05"))
|
||||
fmt.Fprintf(&b, "搜索词: %s\n", query)
|
||||
if strings.TrimSpace(routeReason) != "" {
|
||||
fmt.Fprintf(&b, "调用原因: %s\n", strings.TrimSpace(routeReason))
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Fprintf(&b, "搜索结果状态: %v\n", err)
|
||||
}
|
||||
fmt.Fprintln(&b, "请改用模型自身知识库回答用户问题,并在回答开头或结尾明确说明:本次联网搜索未获得可用结果,以下内容来自模型训练数据/内置知识,可能不是最新或完整信息。")
|
||||
fmt.Fprintln(&b, "不要伪造网页链接或声称已由搜索结果证实;涉及时效性、争议性或不确定细节时要提示用户核验。")
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func defaultConfig() Config {
|
||||
return Config{
|
||||
Enabled: true,
|
||||
|
||||
@@ -2,6 +2,7 @@ package search
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
@@ -66,6 +67,15 @@ func TestBuildResultContext(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildFallbackContext(t *testing.T) {
|
||||
text := BuildFallbackContext(ProfileConfig{Name: "duckduckgo", Provider: "duckduckgo"}, "历史上的今天都发生了什么?", "需要查询当天历史事件", errors.New("未搜索到相关网页结果"))
|
||||
for _, want := range []string{"没有可用的搜索结果", "历史上的今天", "需要查询当天历史事件", "模型训练数据/内置知识", "不要伪造网页链接"} {
|
||||
if !strings.Contains(text, want) {
|
||||
t.Fatalf("fallback context missing %q:\n%s", want, text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestDuckDuckGoSearchParsesResults(t *testing.T) {
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Query().Get("q") != "golang" {
|
||||
|
||||
Reference in New Issue
Block a user