百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Ollama:Web搜索API和MCP_oalib search

myzbx 2025-10-19 10:06 56 浏览

如果您曾经尝试过 LLM,您就会明白其中的痛点:模型在模式匹配方面非常出色,但往往会虚构一些东西。

如果你问起上周发生的事情,突然间,您得到的只是来自 2022 年的鬼故事。

这次更新改变了这一切。

基本上,Ollama 为他们的模型提供了一种访问互联网的途径。

它们无需产生幻觉,而是可以在回答之前提取真实的结果。

而且设置起来也很简单——你可以获得一个 REST API 以及一些简单的 Python 和 JavaScript 钩子函数。

此外,还有一个免费套餐,这总是一个不错的补充。

1、为什么这很酷

模型会冻结在时间中。

除非你输入数据,否则它们根本“不知道”昨天发生了什么。

所以,如果你想让你的机器人回答诸如“Ollama 引擎本月有什么新功能?”之类的问题,你要么花费数小时使用抓取的数据进行微调……要么干脆让它搜索网页。

现在有了这个 API:

  • 你可以获取最新信息。
  • 减少“嗯,实际上”的幻觉。
  • 构建一个小型的研究助手,在回复之前进行搜索。

感觉就像把谷歌融入了你的聊天机器人的大脑。

2、首次测试:经典的 cURL

我从简单的 cURL 开始。刚刚从我的 Ollama 账户中获取了一个 API 密钥并导出:

export OLLAMA_API_KEY="your_api_key"

然后运行:

curl https://ollama.com/api/web_search \
  --header "Authorization: Bearer $OLLAMA_API_KEY" \
  -d '{
    "query": "what is ollama?"
  }'

输出 — JSON 结果:

{
  "results": [
    {
      "title": "Ollama",
      "url": "https://ollama.com/",
      "content": "Cloud models are now available..."
    },
    {
      "title": "What is Ollama? Introduction to the AI model management tool",
      "url": "https://www.hostinger.com/tutorials/what-is-ollama",
      "content": "6min read..."
    }
  ]
}

对于一个命令来说还不错。

3、Python 版本

由于我大部分时间都用 Python,所以我切换到了 Python 库。安装方法如下:

pip install "ollama>=0.6.0"

然后:

import ollama

response = ollama.web_search("What is Ollama?")
print(response)

返回的结果基本上是一个简洁的结果列表:

results = [
  {
    "title": "Ollama",
    "url": "https://ollama.com/",
    "content": "Cloud models are now available..."
  },
  {
    "title": "Complete Ollama Guide",
    "url": "https://collabnix.com/complete-ollama-guide-installation-usage-code-examples",
    "content": "Join our Discord Server..."
  }
]

非常简洁——我将其集成到另一个总结内容的函数中。

4、JavaScript

如果你更喜欢 JS/Node,那么操作基本相同。

npm install "ollama@>=0.6.0"

然后:

import { Ollama } from "ollama";

const client = new Ollama();
const results = await client.webSearch({ query: "what is ollama?" });
console.log(JSON.stringify(results, null, 2));

同样,返回 JSON。很容易输入到代理甚至前端小部件中。

5、迷你搜索代理

接下来就是它的亮点了。Ollama 允许你将搜索插入到模型循环中,这样 LLM 就可以决定何时进行搜索。我用 Qwen 3 (4B) 测试了它。

以下是基本代码:

from ollama import chat, web_fetch, web_search

available_tools = {'web_search': web_search, 'web_fetch': web_fetch}

messages = [{'role': 'user', 'content': "what is ollama's new engine"}]

while True:
  response = chat(
    model='qwen3:4b',
    messages=messages,
    tools=[web_search, web_fetch],
    think=True
    )
  if response.message.thinking:
    print('Thinking: ', response.message.thinking)
  if response.message.content:
    print('Content: ', response.message.content)
  messages.append(response.message)
  if response.message.tool_calls:
    print('Tool calls: ', response.message.tool_calls)
    for tool_call in response.message.tool_calls:
      function_to_call = available_tools.get(tool_call.function.name)
      if function_to_call:
        args = tool_call.function.arguments
        result = function_to_call(**args)
        print('Result: ', str(result)[:200]+'...')
        # Result is truncated for limited context lengths
        messages.append({'role': 'tool', 'content': str(result)[:2000 * 4], 'tool_name': tool_call.function.name})
      else:
        messages.append({'role': 'tool', 'content': f'Tool {tool_call.function.name} not found', 'tool_name': tool_call.function.name})
  else:
    break

会发生什么这里:

  • 你提出一个问题。
  • 模型思考后会说:“嗯,我应该搜索一下。”
  • 访问网络,提取数据,然后据此做出回答。

感觉很像 ChatGPT 的浏览模式,只不过你可以控制每个部分。

6、抓取完整页面

有时你不只是想要片段,你想要的是整个页面。Ollama 为此添加了一个网页抓取功能。

在 Python中:

from ollama import web_fetch

page = web_fetch("https://ollama.com")
print(page)

在 JS 中:

const page = await client.webFetch({ url: "https://ollama.com" });
console.log(page);

您将获得标题、完整内容,甚至所有链接。非常适合摘要器或爬虫。

6、额外功能:MCP + Cline

如果您已经在使用 MCP 服务器(例如 Cline),Ollama 搜索功能将立即可用。请将以下内容添加到您的配置中:

管理 MCP 服务器 > 配置 MCP 服务器 > 添加以下配置:

{
  "mcpServers": {
    "web_search_and_fetch": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "path/to/web-search-mcp.py"],
      "env": { "OLLAMA_API_KEY": "your_api_key_here" }
    }
  }
}


现在,每个 MCP 客户端都可以访问实时网页搜索,非常方便。

您可以通过 Goose 的扩展程序连接 Ollama。



原文链接:Ollama:Web搜索API和MCP - 汇智网

相关推荐

如何设计一个优秀的电子商务产品详情页

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...

怎么在JS中使用Ajax进行异步请求?

大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...

中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革

前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...

前端监控 SDK 开发分享_前端监控系统 开源

一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...

Ajax 会被 fetch 取代吗?Axios 怎么办?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...

前端面试题《AJAX》_前端面试ajax考点汇总

1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...

Ajax 详细介绍_ajax

1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...

6款可替代dreamweaver的工具_替代powerdesigner的工具

dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光

时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...

不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!

Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...

2025 年 Python 爬虫四大前沿技术:从异步到 AI

作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...

最贱超级英雄《死侍》来了!_死侍超燃

死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...

停止javascript的ajax请求,取消axios请求,取消reactfetch请求

一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...