brew install ollama

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

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

ollama pull llama2

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

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

pip install ollama

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

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

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”)和一個提示字符串。該模型將處理提示,結果(字典)包含“響應”密鑰的模型答案。例如,輸出可能是關于天空為什么藍色的科學解釋。如果一切都正確配置,則應看到在控制臺中打印的答案。

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

from ollama import chat

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

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

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

示例用例

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

用例 1:AI 聊天機器人

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

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

如何構建它: 您將維護對話歷史記錄,并在用戶交互時不斷將其發送到 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})

在此代碼中:

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

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

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

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

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

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

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

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

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

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'])

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

另一個自動化示例可能是代碼生成或幫助。假設您要自動編寫樣板代碼或配置文件自動化。您可以通過指令提示模型并將其輸出代碼,然后您的 Python 程序將其保存到磁盤。例如:

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 如何通過自動化編碼或文檔任務的部分來增強開發人員的工作流程。

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

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

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

步驟1:設置環境

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

import ollama

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

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

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

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

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

步驟3:初始化代理對話

現在,讓我們設置代理的初始上下文。我們將提供一個系統指令,將有關可用工具以及何時使用的模型告知模型。例如,系統消息可能會說: “您是數學助手。如果用戶提出數學問題,則可以調用 add_two_numbers 函數。” 這將指導模型適當地使用工具。我們還會準備一個需要該工具的用戶查詢:

""" 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:與模型聊天并提供工具

現在,我們將在工具參數中提供型號名稱,對話消息和我們的工具功能:

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

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

步驟5:處理工具響應

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

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)

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

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

將所有內容放在一起,一個簡單的代理循環可能看起來像:

""" (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)

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

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

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

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

最后的想法

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

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

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

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

文章轉載自: Using Ollama with Python: Step-by-Step Guide

上一篇:

實測:阿里云百煉上線「全周期 MCP 服務」,AI 工具一站式托管
最后一篇
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費