文章目录
前言
我需要对本地的Deepseek-r1:14b进行提问,我发现它对于实时的问题,或者不知道的问题,会不回答或者乱回答。基于这点我想通过Web API传输更多的信息给到Deekseek,从而让他回答更加精准。
一、Deekseek本地部署
这个只需要下载Ollama就可以实现。具体可以看我之前的文章 Ollama本地部署
二、SerpAPI
1.什么是SerpAPI?
SerpAPI是一个提供搜索引擎结果的API服务,允许开发者在其应用程序中集成Google、Bing等搜索引擎的功能。它支持多种参数设置,可以根据地域和语言进行定制化搜索。
2.如何使用SerpAPI进行Web搜索
代码如下(示例):
def get_search_results(query):
params = {
"engine": "bing", # 或者"google"取决于你想从哪个搜索引擎获取数据
"q": query,
"api_key": "YOUR_API"
}
response = requests.get('https://serpapi.com/search', params=params)
results = response.json()
return results['organic_results'][:5]
# 获取前5个结果
# for result in results['organic_results'][:5]:
# print(f"标题: {result['title']}")
# print(f"链接: {result['link']}")
# print(f"摘要: {result['snippet']}\n")
三、实现Deepseek-r1:14b+ScraperAPI实现联网本地大模型回答
1. Code
代码如下(示例):
from ollama import chat
import requests
import requests
import json
import time
def get_search_results(query):
params = {
"engine": "bing", # 或者"google"取决于你想从哪个搜索引擎获取数据
"q": query,
"api_key": "YOUR_API"
}
response = requests.get('https://serpapi.com/search', params=params)
results = response.json()
return results['organic_results'][:5]
# 获取前5个结果
# for result in results['organic_results'][:5]:
# print(f"标题: {result['title']}")
# print(f"链接: {result['link']}")
# print(f"摘要: {result['snippet']}\n")
def query_model(prompt, context=""):
# 实现你的模型查询逻辑,这里简化处理
# 假设context是一个字符串,包含了搜索结果的相关信息
full_prompt = f"{context}\nUser: {prompt}\nAssistant:"
stream = chat(
model='deepseek-r1:14b',
messages=[{'role': 'user', 'content': full_prompt}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
return chunk['message']['content']
#full_prompt = f"{context}\nUser: {prompt}\nAssistant:"
#response = model.generate(full_prompt) # 这里应替换为实际的模型调用逻辑
#return response
def main():
user_query = "今天天气如何?";
search_results = get_search_results(user_query)
# 提取并整理搜索结果中的关键信息作为上下文
context_info = "\n".join([f"标题: {result['title']}, 摘要: {result['snippet']}" for result in search_results])
# 结合上下文询问模型
answer = query_model(user_query, context=context_info)
print(f"助手的回答:{answer}")
if __name__ == "__main__":
main()