🌋【超简单】零门槛!NextChat 一键调用 Google 联网搜索!免费!!

AFF 硅基流动统一登录 我也来,注册送 2000W tokens

佬 我是Mac nextchat 去哪下载app 还是有什么网站呀 api在用cherry studio 这个能支持 互联网么 感谢感谢!!!

1 Like

NextChat 官方项目:

但如果你原本不是用 NextChat 不必专门下这个,用中转的就是 :arrow_lower_left:

https://linux.do/t/topic/292029

两种都行 ↑

4 Likes

感谢佬的大力帮助!!!

1 Like

我已经和newapi作者说了,估计快适配 -search 了

2 Likes

cherry studio的最新版已经可以用搜索了
image

1 Like

好像适配了,但是不会用。佬教一下

就是添加一个 gemini-2.0-flash-exp-search 模型就好

我复制作者的示例,为什么不得呢?
要怎么做,佬

1 Like

确实有价值啊。可以检索最新信息


最新版的cherry studio也已经支持了

佬。使用newapi的openai格式的话,这个url.endsWith(‘gemini-2.0-flash-exp:streamGenerateContent’)总是判断为false怎么办?

或者说使用openai格式的话,这些工具和参数的设置还能生效吗

OpenAI 的请求体和 Gemini 的不一样,你试试这个 :arrow_lower_left:

// 保存原始的 fetch 函数
const originalFetch = window.fetch;

// 重写 fetch 函数
window.fetch = async function(...args) {
    // 如果是 POST 请求
    if (args[1]?.method === 'POST') {
        try {
            // 获取请求体
            const body = JSON.parse(args[1].body);
            
            // 如果包含 messages 数组,说明是目标请求
            if (Array.isArray(body.messages) && body.messages.length > 0) {
                
                // 检查 model 参数是否同时包含 gemini, 2.0, flash(不区分大小写)
                if (body.model && 
                    body.model.toLowerCase().includes('gemini') && 
                    body.model.toLowerCase().includes('2.0') && 
                    body.model.toLowerCase().includes('flash')) {
                    
                    // 为最后一条消息添加 tools 参数
                    const lastMessage = body.messages[body.messages.length - 1];
                    lastMessage.tools = [{
                        "googleSearch": {}
                    }];
                    
                    // 更新请求参数
                    args[1].body = JSON.stringify(body);
                }
            }
        } catch (e) {
            console.log('解析请求体失败:', e);
        }
    }
    
    // 调用原始的 fetch 函数
    return originalFetch.apply(this, args);
};

// 监听发送按钮点击
const sendButton = document.querySelector('button.button_icon-button__VwAMf.chat_chat-input-send__GFQZo');
if (sendButton) {
    console.log('已设置请求拦截器');
}

改了下,你的模型名称需要同时包含 gemini, 2.0, flash 三要素才会进行拦截重写。


如果 New API 的逻辑是整个请求体反手闭眼传就能,如果是每一项都写死的不传输 tools 参数的话就不能,总而言之试试看,回车后就问问今天是几日几号诸如此类。


New API 会对请求进行转换统一为 OpenAI 格式,如果转换函数把这个 tools 参数过滤掉了的话就用不了。(楼上已经有佬向 New API 作者提 Issue 了,Cherry 客户端也已经原生支持)

1 Like

确实用不了,直接报错 GenerateContentRequest.tools[0].function_declarations[0].name: Invalid function name
似乎不可以使用这种

这个错误今天见过,我修改了你再试试上面的 ↑

NextChat 页面按下 F5 刷新再试(不刷新的话监听是旧函数优先)

麻烦佬了,还是没有用,看来newapi问题还是太多了,这种统一转换为openai格式的管理系统好像抹杀了一大堆原有功能……

1 Like

:tieba_087: 悲,有空我再找个支持 Gemini 2.0 的 New API 的公益站试试。已经有佬写好其他中转方式了你可以试试他们的。

4 Likes

感谢大佬分享 11

佬,可以了,更新一下newapi,然后将代码改成这样子就行了。

// 保存原始的 fetch 函数
const originalFetch = window.fetch;

// 重写 fetch 函数
window.fetch = async function(...args) {
    // 如果是 POST 请求
    if (args[1]?.method === 'POST') {
        try {
           // 获取请求体
           const body = JSON.parse(args[1].body);
            // 如果包含 messages 数组,说明是目标请求
            if (Array.isArray(body.messages) && body.model.toLowerCase().includes("gemini-2.0-flash-exp")) {
               // 添加 tools 参数
               body.tools = [
             {
                "type": "function",
               "function": {
                "name": "googleSearch"
                }
               }]
             // 更新请求参数
               args[1].body = JSON.stringify(body);
           }
       } catch (e) {
           console.log('解析请求体失败:', e);
       }
   } 
    // 调用原始的 fetch 函数
    return originalFetch.apply(this, args);
};

// 监听发送按钮点击
const sendButton = document.querySelector('button.button_icon-button__VwAMf.chat_chat-input-send__GFQZo');
if (sendButton) {
    console.log('已设置请求拦截器');
}
1 Like