# ChatGPT如何实现联网?

思路:调用谷歌的搜索接口,查询出来数据用GPT进行分析达到联网的效果,你可以在用户输入问题时,利用GPT函数判断是否需要调用接口去联网,也可以设置联网开关

提示

GPT-4 的 API 自身并不具备直接联网的功能。当使用 GPT-4 时,它是作为一个封闭的模型运行的,这意味着它无法直接访问或检索互联网上的信息。然而,使用谷歌插件可以让 GPT-4 在一定程度上“联网”

一、你需要准备一个谷歌账号来调用谷歌浏览器的接口。获取教程 (opens new window)

二、准备好APIkey

当你获取谷歌的搜索APIkey与搜索引擎ID之后,进行下一步操作操作,我们可以对接谷歌的搜索接口,具体接口文档点击文档 (opens new window)了解

在此推荐使用Laf (opens new window)谷歌搜索函数 (opens new window),里面已经写好了谷歌搜索的函数代码,可以拿来直接用,如下图

谷歌搜索函数

# 最后将搜索结果传入GPT的Prompt中实现联网。例如以下代码

import requests
from openai import OpenAI
import os

def fetch_google_search_results(search_key):
    url = 'https://p4tmiw.laf.dev/googleSearch'
    headers = {'Content-Type': 'application/json'}
    payload = {'data': {'searchKey': search_key}}

    response = requests.post(url, json=payload, headers=headers)
    if response.status_code == 200:
        return response.json()
    else:
        return None

def ask_gpt(prompt):
    client = OpenAI(
        api_key="sk-tsnO49SrDzr35*****bCc6c6346F682B614335414AeD6",
        base_url="https://api.openai-hub.com/v1"
    )

    chat_completion = client.chat.completions.create(
         messages=[
            {
                "role": "user",
                "content": prompt,
            }
        ],
        model="gpt-4-1106-preview",
    )
    return chat_completion.choices[0].message.content.strip()

# 示例用法
search_key = "最近十大热点新闻是?"
search_results = fetch_google_search_results(search_key)

if search_results and 'prompt' in search_results:
    google_search_data = search_results['prompt']
    gpt_prompt = f"""
    您现在是一个具备联网功能的智能助手。我将提供一段来自互联网的文本信息。请根据这段文本以及用户提出的问题来给出回答。如果网络资料中的信息不足以回答用户的问题,请回复说无法提供确切的答案。
    网络资料:
    ------------------------------------------
    {google_search_data}

    -------------------------------------------
    用户问题:
    --------------------------------------------
    {search_key}
    ---------------------------------------------
    """
    answer = ask_gpt(gpt_prompt)
    print(answer)
else:
    print("搜索失败或没有结果。")


# 运行结果如下

运行结果