# 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("搜索失败或没有结果。")