Ollama大模型开发实战:从基础到高级功能的全面指南

本文全面介绍了Ollama大模型平台的核心功能与开发技巧,包括流式处理三种模式、CLI命令使用、Pydantic定义JSON结构、向量嵌入应用、Agent多轮工具调用以及Web Search API集成。通过丰富代码示例和最佳实践指导,帮助开发者掌握从基础到高级的Ollama应用开发技能,适合希望构建强大AI应用的程序员学习参考。


一、流式处理核心概念

1.1 三种流式模式

模式字段用途
聊天模式content流式输出助手消息,实时渲染
思考模式thinking显示模型推理过程
工具调用tool_calls执行外部工具并返回结果

1.2 流式处理示例

from ollama import chat stream = chat( model='qwen3:1.7b', messages=[{'role': 'user', 'content': 'What is 17 × 23?'}], stream=True, think=False ) # 初始化状态变量和累积字符串 in_thinking = False # 标记是否正在接收思考过程 content = '' # 存储最终回答内容 thinking = '' # 存储思考过程内容 # 遍历流式响应中的每个数据块 (chunk) for chunk in stream: # 如果当前块包含思考过程 (thinking) 内容 if chunk.message.thinking: # 如果是第一次接收到思考内容,则打印标题 if not in_thinking: in_thinking = True print('Thinking:\n', end='', flush=False) # 打印当前部分的思考内容(不换行) print(chunk.message.thinking, end='', flush=False) # 将当前思考内容追加到总的思考字符串中 thinking += chunk.message.thinking # 如果当前块包含实际回答 (content) 内容 elif chunk.message.content: # 如果之前在显示思考过程,则切换状态并打印答案标题 if in_thinking: in_thinking = False print('\n\nAnswer:\n', end='', flush=True) # 打印当前部分的回答内容(不换行) print(chunk.message.content, end='', flush=True) # 将当前回答内容追加到总的回答字符串中 content += chunk.message.content new_messages = [{'role': 'assistant', thinking: thinking, content: content}] print('\n\nNew messages:\n', new_messages)

二、CLI 命令速查

2.1 思考模式控制

# 启用思考模式 ollama run deepseek-r1 --think "Where should I visit in Lisbon?" # 禁用思考模式 ollama run deepseek-r1 --think=false "Summarize this article" # 隐藏思考过程(但仍使用思考模型) ollama run deepseek-r1 --hidethinking "Is 9.9 bigger or 9.11?"

2.2 交互式会话控制

# 启用思考 /set think # 禁用思考 /set nothink

2.3 GPT-OSS

# 支持三个级别: low, medium, high ollama run gpt-oss --think=low "Draft a headline" ollama run gpt-oss --think=medium "Draft a headline" ollama run gpt-oss --think=high "Draft a headline"

三、结构化 JSON 输出

3.1 使用 Pydantic 定义 Schema

from ollama import chat from pydantic import BaseModel from typing import Literal, Optional # class BlurLocation(BaseModel): # province: str # city: str # district: str # # response = chat( # model='qwen3:1.7b', # messages=[{'role': 'user', 'content': '曹县在具体在哪个位置'}], # think=False, # format=BlurLocation.model_json_schema() # ) # # loc = BlurLocation.model_validate_json(response.message.content) # print(loc) class Object(BaseModel): name: str confidence: float attributes: str class ImageDes(BaseModel): summary: str objects: list[Object] scene: str colors: list[str] time_of_day: Literal['Morning', 'Afternoon', 'Evening', 'Night'] setting: Literal['Outdoor', 'Indoor', 'Unknown'] text_content: Optional[str]=None response = chat( model='qwen3-vl:2b', messages=[{ 'role': 'user', 'content': 'Use Chinese to describe this photo and list the objects you detect.', 'images': ['/Users/okonma/Desktop/pics/misato.jpg'] }], format=ImageDes.model_json_schema(), options={ 'temperature': 0 } ) print(response.message.content)

3.2 最佳实践

推荐做法:

  • 使用 Pydantic (Python) 或 Zod (JavaScript) 定义 schema
  • 设置temperature=0获得确定性输出
  • 在提示词中包含 JSON schema 说明
  • 通过 OpenAI 兼容 API 使用response_format参数

四、向量嵌入

4.1 推荐模型

模型链接
embeddinggemmaollama.com/library/embeddinggemma
qwen3-embeddingollama.com/library/qwen3-embedding
all-minilmollama.com/library/all-minilm

4.2 使用建议

  • 使用余弦相似度进行语义搜索
  • 索引和查询使用同一个嵌入模型

五、Agent 循环 (多轮工具调用)

5.1 概念

Agent 循环允许模型:

  • 自主决定何时调用工具
  • 将工具结果整合到回复中
  • 进行多轮工具调用

5.2 实现要点

💡提示:在提示词中告知模型它处于循环中,可以进行多次工具调用

5.3 完整示例:搜索 Agent

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]+'...') # 限制上下文长度,截断结果 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 # 没有工具调用,退出循环

⚠️重要提示:

  • 建议将模型上下文长度增加到至少 32000 tokens
  • Ollama 云模型运行在完整上下文长度

六、Web Search & Fetch API

6.1 初始化客户端

import ollama # 配置 API Key client = ollama.Client( headers={ "Authorization": "Bearer API_KEY" } )

6.2 Web Search API

请求端点:POST <https://ollama.com/api/web_search>

参数:

  • query

    (string, 必填): 搜索查询字符串

  • max_results

    (integer, 可选): 最多返回结果数 (默认 5, 最大 10)

响应格式:

{ "results": [ { "title": "网页标题", "url": "网页 URL", "content": "相关内容片段" } ] }

使用示例:

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

6.3 Web Fetch API

请求端点:POST <https://ollama.com/api/web_fetch>

参数:

  • url

    (string, 必填): 要获取的 URL

响应格式:

WebFetchResponse( title='网页标题', content='网页主要内容', links=['链接1', '链接2', ...] )

使用示例:

from ollama import web_fetch result = web_fetch('https://ollama.com') print(result)

七、MCP Server 集成

Ollama 支持通过 Python MCP server 在任何 MCP 客户端中启用 Web Search。

7.1 Cline 集成

在 Cline 中配置:Manage MCP Servers>Configure MCP Servers

{ "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" } } } }

7.2 Codex 集成

配置文件位置:~/.codex/config.toml

[mcp_servers.web_search] command = "uv" args = ["run", "path/to/web-search-mcp.py"] env = { "OLLAMA_API_KEY" = "your_api_key_here" }

7.3 Goose 集成

Ollama 可通过 MCP 功能与 Goose 集成。


AI大模型从0到精通全套学习大礼包

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

只要你是真心想学AI大模型,我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!

如果你也想通过学大模型技术去帮助就业和转行,可以扫描下方链接👇👇
大模型重磅福利:入门进阶全套104G学习资源包免费分享!

01.从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点

02.AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线


03.学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的


04.大模型面试题目详解

05.这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!


如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1220670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从入门到精通:RAG生产级实战指南 | 大模型应用必备收藏

本文全面介绍RAG从概念验证到生产落地的技术指南&#xff0c;详细解析知识库构建、检索增强、生成推理等关键环节&#xff0c;涵盖文档处理、Embedding模型选型、混合检索架构、Prompt工程、评估监控及成本优化等实战内容。文章强调RAG成功取决于工程细节而非模型本身&#xff…

大模型开发工程师年薪90万不是梦!零基础入门到高薪就业的完整攻略(附资料包)

大模型应用开发工程师市场需求激增&#xff0c;岗位需求同比增长超200%&#xff0c;应届生年薪可达90万。该岗位主要负责API对接、Prompt设计、模型微调和系统集成。入行需掌握Python、Transformer架构、Prompt工程、RAG系统及LangChain等框架。相比底层模型训练&#xff0c;应…

Java毕设项目:基于springboot的机器人健康预警系统(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

银源电力联系方式:企业信息查询与使用建议

一、官方联系方式 加盟咨询电话:13551886986 公司官方网站:www.scyydl.com 二、使用建议与提醒 首先,在进行任何商务联系前,建议访问其官方网站以获取最基础的企业信息与业务范围介绍。官方网站通常是了解一家公司…

【课程设计/毕业设计】基于JAVA+Vue+SpringBoot的个人健康管理系统健康档案、体检档案、健康咨询基于springboot的个人健康管理系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026最新K歌电视品牌top5推荐!家庭娱乐影音设备企业及厂家权威榜单发布,沉浸式K歌体验

引言 随着家庭娱乐场景不断升级,K歌电视凭借“大屏沉浸+专业音效+智能交互”的综合优势,成为现代客厅的核心娱乐终端。据中国电子视像行业协会(CVIA)最新数据显示,2025年国内K歌电视市场规模同比增长42%,但产品音…

Java计算机毕设之基于Springboot+MySQ基于springboot的个人健康管理系统基于SpringBoot + Vue的个人运动健康管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

蓝凌软件联系方式:官方路径与背景介绍

一、官方联系方式 联系电话:4000180300 公司官网:www.landray.com.cn 二、使用建议与提醒 首先,在联系前建议进行初步准备。可以访问蓝凌软件的官方网站,浏览其产品介绍、解决方案和成功案例板块,这有助于您更清晰…

【毕业设计】基于springboot的机器人健康预警系统(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围::小程序、SpringBoot、SSM、JSP、Vue、PHP、Java、pyth…

我的 OI 故事(二):世上本没有路

写在前面:本篇文章是我竞赛回忆录的第二篇,覆盖的时间范围为 \(2022\) 年三月至 \(2023\) 年三月。如果你想了解更多,可以阅读竞赛生涯回忆录《我的 OI 故事》预告。 文中出现的所有人物均已事先确认并同意被提及。…

提示工程架构中的意图识别优化

提示工程架构中的意图识别优化&#xff1a;让AI真正“听懂”用户的话 一、引入&#xff1a;当AI变成“听不懂话的服务员” 清晨的咖啡馆里&#xff0c;你对服务员说&#xff1a;“我要一杯热的&#xff0c;不加糖。” 服务员立刻回应&#xff1a;“好的&#xff0c;热美式不加…

银源电力联系方式:加盟咨询与官方信息指南

一、官方联系方式 加盟咨询电话:13551886986 公司官方网站:www.scyydl.com 二、使用建议与提醒 第一,在通过电话进行咨询前,建议访问其官方网站,对公司的业务范围、资质情况和经营理念进行初步了解。这有助于在沟…

伪爱加密企业 Frida反调试

本期受害者 中国移动 12.0.5 第一步 先去dump 目标so libexec.so 第二步 我们可以使用frida Stalker定位被杀死的位置&#xff1a; Interceptor.attach(JNI_OnLoad, {onEnter: function () {console.log("JNI_OnLoad 进入")const curTid Process.getCurrentThre…

蓝凌软件 联系方式:企业级AI服务咨询路径解析

一、官方联系方式 联系电话:4000180300 公司官网:www.landray.com.cn 二、使用建议与提醒 第一点,在通过官方电话进行咨询前,建议先访问其官方网站,对公司的业务范围、核心产品及服务案例进行初步了解。这有助于在…

2026最新100吋电视企业top5推荐!高品质品牌及厂家全面解析,技术创新与画质体验双优助力家庭观影升级

引言 随着大屏显示技术的快速迭代与家庭娱乐需求的持续升级,100吋电视已成为高品质生活的重要组成部分,但市场产品良莠不齐,消费者常面临画质真实性、系统流畅度、安装适配性等选择难题。据中国电子视像行业协会(C…

怎么做一个微信小程序?10年程序员分享一个0代码教程

你好,我是专门做小程序开发的程序员,在这行已经干了10年。经手过上百个小程序项目,从餐饮零售到教育服务,各种类型都摸透了。根据腾讯2023年财报显示,微信小程序日活跃用户已突破6亿,年交易规模超4万亿(来源:腾…

蓝凌软件联系方式:获取官方信息指引

一、官方联系方式 联系电话:4000180300 公司官网:www.landray.com.cn 二、使用建议与提醒 第一,在联系前进行初步准备。建议访问蓝凌软件的官方网站,浏览其产品介绍、解决方案和成功案例板块,以便对公司的业务范围…

河南精铸工匠不锈钢有限公司 联系方式:如何有效联系与初步沟通

河南精铸工匠不锈钢有限公司是一家专注于不锈钢标识产品与装饰工程解决方案的企业。以下是根据其公开信息整理的官方联系渠道、使用建议以及公司背景简介,供您参考。 一、官方联系方式 联系电话:18595537533 公司名称…

RAG 效果差,80% 的问题和模型无关

RAG效果差,往往错不在模型,而在检索环节:切分不当、检索不相关、TopK过载、缺乏Rerank等。本文揭示RAG本质是“自然语言检索系统”,80%问题源于数据组织与检索质量,而非模型能力。重拾工程思维,先夯实检索,再谈…

【开题答辩全过程】以 基于web的生鲜农产品信息管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…