3种本地运行Llama 3.2的方法

大型语言模型 (LLM) 彻底改变了 AI 领域,小型模型也正在兴起。因此,即使在较旧的 PC 和智能手机上也有可能运行高级 LLM。为了给出一个起点,我们将探索三种不同的本地与 LLama 3.2 交互的方法。

在深入研究之前,请确保你已经:

  • 安装并运行Ollama
  • 已拉取LLama 3.2 模型(在终端中使用 ollama pull llama3.2

现在,让我们探索这三种方法!

方法1:使用Ollama Python包

Ollama Python 包提供了一种在 Python 脚本或 Jupyter 笔记本中与 LLama 3.2 交互的直接方法。

import ollama

response = ollama.chat(
    model="llama3.2",
    messages=[
        {
            "role": "user",
            "content": "Tell me an interesting fact about elephants",
        },
    ],
)
print(response["message"]["content"])

此方法非常适合简单的同步交互。但是,如果你想流式传输响应,该怎么办?Ollama 的 AsyncClient 可以满足你的需求:

import asyncio
from ollama import AsyncClient

async def chat():
    message = {
        "role": "user",
        "content": "Tell me an interesting fact about elephants"
    }
    async for part in await AsyncClient().chat(
        model="llama3.2", messages=[message], stream=True
    ):
        print(part["message"]["content"], end="", flush=True)

# Run the async function
asyncio.run(chat())

方法 2:使用 Ollama API

对于那些喜欢直接使用 API 或希望将 LLama 3.2 集成到非 Python 应用程序中的人,Ollama 提供了一个简单的 HTTP API。

curl http://localhost:11434/api/chat -d '{
    "model": "llama3.2",
    "messages": [
        {
            "role": "user",
            "content": "What are God Particles?"
        }
    ],
    "stream": false
}'

此方法可让你灵活地使用任何可以发出 HTTP 请求的语言或工具与 LLama 3.2 进行交互。

方法 3:使用 Langchain 开发高级应用

对于更复杂的应用程序,尤其是涉及文档分析和检索的应用程序,Langchain 可与 Ollama 和 LLama 3.2 无缝集成。

以下代码片段演示了如何加载文档、创建嵌入和执行相似性搜索:

from langchain_community.document_loaders import DirectoryLoader, UnstructuredWordDocumentLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.llms import Ollama
from langchain_community.vectorstores import Chroma

# Load documents
loader = DirectoryLoader('/path/to/documents', glob="**/*.docx", loader_cls=UnstructuredWordDocumentLoader)
documents = loader.load()

# Split documents into chunks
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
splits = text_splitter.split_documents(documents)

# Create embeddings and vector store
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings)

# Initialize LLama 3.2
llm = Ollama(model="llama3.2", base_url="http://localhost:11434")

# Perform a similarity search and generate a response
query = "What was the main accomplishment of Thomas Jefferson?"
similar_docs = vectorstore.similarity_search(query)
context = "\n".join([doc.page_content for doc in similar_docs])
response = llm(f"Context: {context}\nQuestion: {query}\nAnswer:")
print(response)

这种方法允许你使用 LLama 3.2 强大的语言理解功能构建能够理解和推理大量文本数据的应用程序。

4、结束语

在本地运行 LLama 3.2 为 AI 驱动的应用程序开辟了一个无限可能的世界。无论您是在寻找简单的聊天交互、基于 API 的集成还是复杂的文档分析系统,这三种方法都可以提供灵活性以适应广泛的用例。

请记住以负责任和合乎道德的方式使用这些强大的工具。祝你编码愉快!


原文链接:3 Ways to Run LLama 3.2 Locally

汇智网翻译整理,转载请标明出处