brew install ollama

# On Linux (using the official install script):
curl -sS https://ollama.ai/install.sh | bash

這將安裝 Ollama CLI。安裝后,啟動 Ollama 服務(wù)(在 MacOS 上,您可能會運行 Brew Services Start Ollama Ollama,或者簡單地運行任何 Ollama 命令將啟動其背景服務(wù)器)。您可以通過檢查版本來驗證它已安裝:

ollama pull llama2

此命令將下載模型權(quán)重并在本地設(shè)置(第一次運行型號,Ollama 將自動將其拉動,如果不存在)。確保您為選擇的型號有足夠的磁盤空間和 RAM;例如,7B Llama2 型號可能需要?16GB RAM 才能舒適地運行。您可以使用 Ollama 列表列出可用的型號,并使用 Ollama Show 查看模型的詳細信息。

安裝 Python 庫: 準備好 Ollama 引擎和可用的型號,下一步是為 Ollama 安裝 Python SDK。該庫允許 Python 代碼通過其 REST API 與 Ollama 后端通信。使用 PIP 安裝它:

pip install ollama

這為您提供了 Ollama Python 軟件包(請確保您根據(jù)需要使用 Python 3.8+)。現(xiàn)在,您可以與 Python 腳本或應(yīng)用程序中的本地模型進行交互。

運行第一個示例: 讓我們測試通過運行簡單的一代正確設(shè)置所有內(nèi)容。在 Python 的解釋器或腳本中,嘗試以下內(nèi)容:

import ollama

# Use the generate function for a one-off prompt
result = ollama.generate(model='llama2', prompt='Why is the sky blue?')
print(result['response'])

在此代碼中,我們使用型號名稱(此處為“ Llama2”,我們先前拉到的“ Llama2”)和一個提示字符串。該模型將處理提示,結(jié)果(字典)包含“響應(yīng)”密鑰的模型答案。例如,輸出可能是關(guān)于天空為什么藍色的科學(xué)解釋。如果一切都正確配置,則應(yīng)看到在控制臺中打印的答案。

使用聊天 API: Ollama 還提供了一個聊天界面,用于對話風格的交互。例如:

from ollama import chat

conversation = [
{"role": "user", "content": "Hello, how are you?"}
]
reply = chat(model='llama2', messages=conversation)
print(reply.message.content)

這使用基于聊天的模型(例如指令調(diào)整的駱駝 2)來響應(yīng)用戶消息。消息參數(shù)列出了對話的列表(“用戶”,“助手”等)。 ollama.Chat 函數(shù)返回一個響應(yīng)對象,其中 reply.message.content 保留助手模型的最新答復(fù)。使用此功能,您可以輕松構(gòu)建交互式應(yīng)用程序。 (我們將在下一節(jié)中擴展聊天機器人。)

注意: 第一次使用模型時,可能會有下載延遲。之后,響應(yīng)將直接從您的本地計算機流式傳輸。您還可以通過設(shè)置 stream = true 在 python api 中啟用流式傳輸,如果您想通過 token-toke 輸出以獲得響應(yīng)能力。

示例用例

Ollama 可以為各種 AI 應(yīng)用程序提供動力。在下面,我們探索兩個常見的基于 Python 的用例以證明其功能。

用例 1:AI 聊天機器人

Ollama 最直接的用途之一是創(chuàng)建 AI 聊天機器人。由于 Ollama 可以在本地運行對話模型(例如 Llama-2-Chat 或其他指令調(diào)整模型),因此您可以建立一個私人 Chatgpt 風格的助手。

方案: 想象一下建立客戶支持聊天機器人或完全離線運行的個人助理。 Ollama 的本地LLM將處理自然語言的理解和響應(yīng)生成。

如何構(gòu)建它: 您將維護對話歷史記錄,并在用戶交互時不斷將其發(fā)送到 ollama.chat。例如:

import ollama

# Choose a chat-capable model (ensured it is pulled)
model_name = 'llama2'

# Initialize conversation with a system prompt (optional) and a user message
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"},
]

# First response from the bot
response = ollama.chat(model=model_name, messages=messages)
print("Bot:", response.message.content)

# Continue the conversation:
while True:
user_input = input("You: ")
if not user_input:
break # exit loop on empty input
messages.append({"role": "user", "content": user_input})
response = ollama.chat(model=model_name, messages=messages)
answer = response.message.content
print("Bot:", answer)
messages.append({"role": "assistant", "content": answer})

在此代碼中:

?我們從定義助手行為的系統(tǒng)角色開始(這里只需指示其有用)和初始用戶問候。

?到目前為止,我們致電 Ollama.Chat 進行對話,并打印機器人的答復(fù)。

?然后,我們輸入一個循環(huán),以繼續(xù)讀取用戶輸入并將更新的消息發(fā)送回 Ollama.Chat。我們始終將最新的用戶消息和助手對消息列表的答復(fù)以維護上下文。

?循環(huán)斷開空輸入(作為退出的一種方式)。

這個簡單的聊天機器人將使您完全通過 Python 與LLM進行來回對話。給定對話上下文的每個呼叫 ollama.Chat 都會返回模型的最新答復(fù)。由于該模型在本地運行,因此響應(yīng)與硬件允許的速度一樣快,并且在對話中擁有完全的隱私。這樣的聊天機器人可以使用 GUI 或 Web 界面擴展,但是核心邏輯將保持不變。 Ollama Python 庫摘要繁重的工作,因此構(gòu)建基本的聊天應(yīng)用程序只是幾行代碼。

用例2:工作流程中的自動化

除了聊天機器人之外,Ollama 還可以通過利用 AI 功能來自動化任務(wù)和增強工作流程。例如,您可以使用LLM來匯總文檔,生成報告,協(xié)助編碼或在自動化腳本中解釋命令。本質(zhì)上,Ollama 讓您將 AI“大腦”嵌入到 Python 項目中。

方案: 假設(shè)您每天都有閱讀冗長的日志文件或成績單的工作流程。您可以使用 Ollama 來自動化這些文本的摘要。通過為您提供 AI 突出顯示的關(guān)鍵點,這可以節(jié)省時間。

如何做: 您可以提示LLM來總結(jié)或分析文本并將其集成到管道中。例如:

import ollama

# Example: Summarize a paragraph of text
text = """
OpenAI has introduced a new tool called Ollama that lets users run large language models on local machines.
This approach emphasizes privacy and control, as data does not leave the user's environment.
Developers can leverage various open-source models through a simple interface, improving efficiency and reducing costs.
"""
prompt = f"Summarize the following text in one sentence:\n\"\"\"\n{text}\n\"\"\""
result = ollama.generate(model='llama2', prompt=prompt)
print("Summary:", result['response'])

在這里,我們拿了一段文字,并構(gòu)建了一個提示,要求該模型以一個句子進行總結(jié)。 Ollama.generate 功能返回摘要,這可能是: “ Ollama 是一種新的 OpenAI 工具,可以在本地運行大型語言模型,從而為用戶提供更高的隱私,控制和成本效率。” 這種自動化可以插入較大的腳本中,例如,在多個文檔上迭代并將摘要寫入文件。

另一個自動化示例可能是代碼生成或幫助。假設(shè)您要自動編寫樣板代碼或配置文件自動化。您可以通過指令提示模型并將其輸出代碼,然后您的 Python 程序?qū)⑵浔4娴酱疟P。例如:

code_prompt = "Write a Python function that checks if a number is prime."
response = ollama.generate(model='codellama', prompt=code_prompt)
print(response['response'])

使用代碼專用模型(例如此示例中的 Codellama)將返回用于檢查功能的代碼,然后您可以在項目中使用該代碼。這表明了 Ollama 如何通過自動化編碼或文檔任務(wù)的部分來增強開發(fā)人員的工作流程。

通常,將 Ollama 集成到自動化中意味著您可以在沒有外部 API 調(diào)用的任何 Python 工作流程中具有 AI 驅(qū)動的功能。 Python SDK 的靈活性(具有 Ollama.list(),Ollama.pull(),Ollama.delete()等功能,也意味著您的程序可以即時管理模型,例如,在運行時或為不同任務(wù)開關(guān)模型時拔出所需的模型。這使得可以構(gòu)建精簡復(fù)雜任務(wù)的智能代理,批處理處理器或 AI 驅(qū)動的助手。

分步示例:與 Ollama 建立一個簡單的代理商

要將所有內(nèi)容融合在一起,讓我們通過使用 Ollama 來構(gòu)建一個簡單的 AI 代理 。我們的代理將是一個不僅可以交談的聊天機器人,而且還可以使用 Python 函數(shù)作為工具執(zhí)行簡單的計算。這說明了如何以分步的方式使用 Ollama 的高級功能(函數(shù)調(diào)用)。

步驟1:設(shè)置環(huán)境

確保安裝和運行 Ollama(如入門中所述)。另外,請確保您有合適的型號。對于此代理,我們將使用遵循指令的模型(對于一般的 Q&A),并使其能夠使用工具進行數(shù)學(xué)。像 Llama2 或 Llama3.1 這樣的模型將起作用。 (如果尚未完成,請事先在終端中運行 Ollama Lut Llama2。)在您的 Python 腳本或筆記本中,導(dǎo)入 Ollama 庫以及您需要的任何其他模塊:

import ollama

如果您打算將另一個庫中的特定函數(shù)用作工具,則也將導(dǎo)入它(稍后,我們將顯示一個示例,稍后使用 Python 請求庫)。但是目前,我們的代理商的工具將是一個簡單的內(nèi)部功能。

步驟2:定義工具功能(可選)

Ollama 的 Python 庫允許您傳遞 Python 函數(shù),作為模型在聊天期間可以調(diào)用的工具。這非常適合創(chuàng)建可以采取行動或獲取信息的代理商。我們將定義一個基本的數(shù)學(xué)功能供我們的代理使用:

""" Tool function: add two numbers """
def add_two_numbers(a: int, b: int) -> int:
"""
Add two numbers and return the result.
"""
return a + b

此功能只需占用兩個整數(shù)并返回其總和。 (請注意,我們包含了類型的提示和 docstring;提供此元數(shù)據(jù)可以更好地了解該工具的目的。)如果需要,我們可以注冊更多功能,但是我們將保持簡單。

步驟3:初始化代理對話

現(xiàn)在,讓我們設(shè)置代理的初始上下文。我們將提供一個系統(tǒng)指令,將有關(guān)可用工具以及何時使用的模型告知模型。例如,系統(tǒng)消息可能會說: “您是數(shù)學(xué)助手。如果用戶提出數(shù)學(xué)問題,則可以調(diào)用 add_two_numbers 函數(shù)。” 這將指導(dǎo)模型適當?shù)厥褂霉ぞ摺N覀冞€會準備一個需要該工具的用戶查詢:

""" System prompt to inform the model about the tool is usage """
system_message = {
"role": "system",
"content": "You are a helpful assistant. You can do math by calling a function 'add_two_numbers' if needed."
}
# User asks a question that involves a calculation
user_message = {
"role": "user",
"content": "What is 10 + 10?"
}
messages = [system_message, user_message]

步驟4:與模型聊天并提供工具

現(xiàn)在,我們將在工具參數(shù)中提供型號名稱,對話消息和我們的工具功能:

response = ollama.chat(
model='llama2',
messages=messages,
tools=[add_two_numbers] # pass the actual function object as a tool
)

當我們包括工具= [add_two_numbers]時,在引擎蓋下時,Ollama 庫使該函數(shù)的簽名和 DOCSTRING 可用于模型。該模型在看到用戶問題“什么是 10 + 10?”時,可以決定調(diào)用 add_two_numbers 工具,而不是嘗試進行數(shù)學(xué)本身。 Ollama 的最新版本支持此類功能呼叫。

步驟5:處理工具響應(yīng)

我們從 Ollama.Chat 獲得的結(jié)果是一個可能包括工具調(diào)用的響應(yīng)對象。我們需要檢查該模型是否確實要求使用我們的功能。響應(yīng)將具有屬性響應(yīng)。message.tool_calls,這是模型決定制作的任何工具調(diào)用的列表。我們可以這樣處理:

if response.message.tool_calls:
for tool_call in response.message.tool_calls:
func_name = tool_call.function.name # e.g., "add_two_numbers"
args = tool_call.function.arguments # e.g., {"a": 10, "b": 10}
# If the function name matches and we have it in our tools, execute it:
if func_name == "add_two_numbers":
result = add_two_numbers(**args)
print("Function output:", result)

在此片段中,我們循環(huán)瀏覽任何工具調(diào)用(可能有多個呼叫,但在我們的情況下,我們期望一個)。我們將函數(shù)名稱匹配,然后調(diào)用 add_two_numbers 與模型提供的參數(shù)。結(jié)果(在這種情況 20)被打印出來或可以回到模型中。

模型自己的答案呢?通常,當LLM使用函數(shù)調(diào)用時,它最初可能會用占位符或類似的推理響應(yīng):“ 我將使用 add_two_numbers 工具。 ”。執(zhí)行工具后,您可以將結(jié)果發(fā)送回對話中,以供模型生成最終答案。為簡單起見,我們可以假設(shè)模型的答案將在函數(shù)調(diào)用后完成。如果我們希望代理商明確將最終答案返回給用戶,則可以在功能結(jié)果中附加一條新消息,并提示該模型得出答案。

將所有內(nèi)容放在一起,一個簡單的代理循環(huán)可能看起來像:

""" (Continuing from previous code) """
available_functions = {"add_two_numbers": add_two_numbers}

""" Model's initial response after possibly invoking the tool """
assistant_reply = response.message.content
print("Assistant (initial):", assistant_reply)

""" If a tool was called, handle it """
for tool_call in (response.message.tool_calls or []):
func = available_functions.get(tool_call.function.name)
if func:
result = func(**tool_call.function.arguments)
# Provide the result back to the model in a follow-up message
messages.append({"role": "assistant", "content": f"The result is {result}."})
follow_up = ollama.chat(model='llama2', messages=messages)
print("Assistant (final):", follow_up.message.content)

這樣,代理使用該工具,然后模型以最終答案結(jié)束。運行完整腳本時,輸出可能看起來像:

Assistant (initial): Let me calculate that for you...
Function output: 20
Assistant (final): The result is 20.

代理商成功回答了 “什么是 10 + 10?” 通過使用 Python 函數(shù)進行計算。您已經(jīng)有效地創(chuàng)建了一個簡單的 AI 代理,該代理可以將其功能擴展到LLM的內(nèi)置知識之外,所有這些都在本地運行。您可以類似地添加更多工具或更復(fù)雜的邏輯。例如,您可以通過提供獲取天氣數(shù)據(jù)的工具功能來集成 API 調(diào)用(例如天氣 API),并且當用戶詢問天氣時,該模型可以決定調(diào)用它。

通過這個逐步的示例,我們看到了如何設(shè)置 Ollama,加載模型并使用 Python SDK 來實現(xiàn)將 AI 推理與真實動作結(jié)合的代理。 Ollama Python 庫使從 Idea(AI Agent)將概念從僅幾十行代碼的工作原型中進行簡單明了。

最后的想法

在本指南中,我們介紹了將 Ollama 與 Python 一起使用的基本原理:從了解 Ollama 是什么以及為什么它有益,到設(shè)置它,探索關(guān)鍵用例并建立簡單的代理。使用 Ollama,開發(fā)人員可以在本地運行強大的語言模型,并輕松將它們集成到應(yīng)用程序中。 Python API 是直觀的 – 您可以從基本的生成或聊天呼叫開始,然后根據(jù)需要探索高級功能,例如自定義系統(tǒng)提示,流媒體響應(yīng)或功能工具。

通過利用 Ollama,您可以獲得隱私(您的數(shù)據(jù)保留本地),選擇甚至微調(diào)模型的靈活性以及可能降低成本和延遲。我們演示了如何使用 Ollama 進行 AI 聊天機器人并自動化工作流程。這些示例只是刮擦表面。

對于接下來的步驟,您可能需要嘗試從 Ollama 庫中的不同模型(例如,嘗試以代碼為中心的模型進行編程幫助,或更大的 13B+參數(shù)模型以進行更細微的對話)。您還可以將 Ollama 集成到現(xiàn)有的 AI 框架中 – 例如,使用 Langchain 的 Ollama 集成來構(gòu)建更復(fù)雜的代理或鏈條。社區(qū)和文檔(查看官方的 Ollama 文檔和 GitHub)還有更多示例,例如使用嵌入式語義搜索或在 Web 服務(wù)器模式下運行 Ollama 來服務(wù) API 請求。

有了這個堅實的基礎(chǔ),您可以自信地擴展您的 AI 項目。無論是個人助理,數(shù)據(jù)分析工具還是網(wǎng)站的自定義聊天機器人, Ollama 都可以使您根據(jù)自己的條款開發(fā)和擴展這些解決方案 。快樂的建筑!

文章轉(zhuǎn)載自: Using Ollama with Python: Step-by-Step Guide

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
返回頂部
上一篇
AI短劇工業(yè)革命:API如何重塑內(nèi)容生產(chǎn)全鏈路
下一篇
手把手教你使用盤古API
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
成人av电影在线播放| 国产精品毛片高清在线完整版| 国产精品青草久久| 国产亚洲婷婷免费| 亚洲精品一线二线三线| 男人的天堂亚洲一区| 欧美日本一区二区三区四区| 日韩三级视频在线观看| 免费成人在线观看| 91免费观看国产| 蜜臀av性久久久久蜜臀aⅴ| 欧美sm极限捆绑bd| 亚洲大片免费看| 91网站黄www| 天天操天天综合网| 色综合久久88色综合天天免费| 亚洲成人免费视频| 中文字幕中文在线不卡住| 91女神在线视频| 日本不卡123| 国产精品免费人成网站| 成人午夜又粗又硬又大| 欧美大度的电影原声| 久久99热国产| 亚洲综合在线视频| 欧美精品日日鲁夜夜添| 国模无码大尺度一区二区三区| 99久久精品国产导航| 91老师国产黑色丝袜在线| 人人精品人人爱| 亚洲国产精华液网站w| 国产91高潮流白浆在线麻豆| 亚洲欧美偷拍另类a∨色屁股| 国产成人aaaa| 波多野结衣欧美| 91香蕉视频在线| 成人免费三级在线| 国产精品一区二区三区乱码| 1区2区3区精品视频| 日韩国产一区二| 国产成人精品影院| 99re在线精品| 91亚洲大成网污www| 成人性生交大片免费看中文| 蜜桃视频一区二区| 国产亚洲欧美中文| 日韩高清在线不卡| 丰满亚洲少妇av| 国产一区二区免费看| 丝袜脚交一区二区| 午夜一区二区三区视频| 岛国一区二区三区| 日韩一区二区电影网| 精品国产一二三| 日韩毛片一二三区| 亚洲精品免费视频| 成人晚上爱看视频| 亚洲男人天堂av网| 国产精品系列在线播放| 制服丝袜日韩国产| **性色生活片久久毛片| 亚洲精品乱码久久久久久日本蜜臀| 风流少妇一区二区| 亚洲福利一区二区三区| 懂色av中文字幕一区二区三区| 精品国产伦一区二区三区观看体验| 国产亚洲精品bt天堂精选| 久久这里都是精品| 欧洲av一区二区嗯嗯嗯啊| 一区二区三区精密机械公司| 久久99久久久欧美国产| 91福利区一区二区三区| 精品国产91亚洲一区二区三区婷婷| 精品制服美女久久| 欧美一级精品在线| 日韩av午夜在线观看| av激情成人网| 欧美日韩卡一卡二| 99久久精品99国产精品 | 粗大黑人巨茎大战欧美成人| 日韩视频免费观看高清在线视频| 国产一区二区三区免费在线观看 | 精品久久国产字幕高潮| 国产成人av一区| 美女精品一区二区| 亚洲第一福利视频在线| 91麻豆精品国产91久久久更新时间| 美女国产一区二区三区| 97精品国产露脸对白| 91原创在线视频| 黄网站免费久久| 午夜日韩在线观看| 中文久久乱码一区二区| 91麻豆精东视频| 国产91在线看| 综合在线观看色| 欧美一二三四在线| 成人ar影院免费观看视频| 99视频有精品| 国产在线一区二区综合免费视频| 亚洲精品国产无天堂网2021| 日韩亚洲欧美在线| 69av一区二区三区| 日韩免费性生活视频播放| 欧美精品18+| 欧美一级一级性生活免费录像| 日韩一本二本av| 精品美女一区二区| 日韩欧美在线影院| 欧美成人性福生活免费看| 乱中年女人伦av一区二区| eeuss国产一区二区三区| 欧美三级资源在线| 色哟哟国产精品| 99视频超级精品| 亚洲欧洲中文日韩久久av乱码| 国产精品自拍网站| 久久久噜噜噜久久人人看| 麻豆国产一区二区| 91香蕉视频污| 亚洲一区二区在线视频| 色综合一个色综合亚洲| 亚洲三级在线免费| 欧美亚洲高清一区| 精品一区二区在线视频| 久久婷婷成人综合色| 91在线精品一区二区| 在线精品视频一区二区| 国产精品一线二线三线精华| 亚洲精品欧美激情| 欧美精品日韩精品| 午夜精品一区在线观看| 亚洲伊人色欲综合网| 亚洲日本乱码在线观看| 麻豆精品国产传媒mv男同| 久久精品国产一区二区| 欧美日韩美少妇| 成人涩涩免费视频| 国产日韩欧美a| 播五月开心婷婷综合| 国模冰冰炮一区二区| 国产亚洲精品福利| 国产在线精品国自产拍免费| 56国语精品自产拍在线观看| 精品一区免费av| 国产一区二区视频在线| 久久久青草青青国产亚洲免观| 亚洲激情综合网| 精品国产91洋老外米糕| 欧美一区二区三区男人的天堂 | 国产午夜一区二区三区| 日本黄色一区二区| 婷婷综合久久一区二区三区| 欧美性生活影院| 精品夜夜嗨av一区二区三区| 一区二区三区欧美日| 天堂一区二区在线| 综合久久给合久久狠狠狠97色| 国内成人免费视频| 免费观看成人鲁鲁鲁鲁鲁视频| 精品亚洲aⅴ乱码一区二区三区| 精品欧美久久久| 欧美日韩中字一区| 91黄视频在线观看| 中文字幕亚洲欧美在线不卡| 欧美日韩aaa| 日韩精品中午字幕| 久久这里只有精品首页| 欧美亚洲国产一区二区三区va | 美女一区二区三区| 久久久一区二区| 51精品久久久久久久蜜臀| 国产呦精品一区二区三区网站| 国产精品66部| 欧美日韩国产影片| 久草精品在线观看| 久久久久久久久久久黄色| 一区二区日韩av| 中文字幕一区二区三区精华液| 亚洲视频狠狠干| 蜜臀国产一区二区三区在线播放| 国产尤物一区二区| 99在线视频精品| 久久99精品一区二区三区| 午夜视频在线观看一区二区 | 国产乱人伦偷精品视频不卡| 精品视频在线看| 亚洲国产cao| 亚洲情趣在线观看| 国产精品一品二品| 色综合久久久久久久久久久| 色婷婷av一区二区三区大白胸| 国产亚洲欧美一级| 91国产视频在线观看| 激情综合网av| 国产婷婷一区二区| 国产精品亚洲综合一区在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 91精品欧美一区二区三区综合在 | 国产精品剧情在线亚洲|