跳到内容

使用 LLM#

提示

查看我们的 LLM 模块指南,了解我们支持的 LLM 列表及其功能比较。

构建基于 LLM 的应用程序的首要步骤之一是选择使用哪个 LLM;它们具有不同的优势和价格点,您可能希望使用多个 LLM。

LlamaIndex 为大量不同的 LLM 提供了一个单一接口。使用 LLM 可以像安装相应的集成一样简单

pip install llama-index-llms-openai

然后通过一行代码调用它

from llama_index.llms.openai import OpenAI

response = OpenAI().complete("William Shakespeare is ")
print(response)

请注意,这需要在您的环境中设置名为 OPENAI_API_KEY 的 API 密钥;请参阅 入门教程 了解更多详细信息。

complete 也可用作异步方法 acomplete

您还可以通过调用 stream_complete 获取流式响应,它返回一个生成器,该生成器在生成令牌时产生令牌

handle = OpenAI().stream_complete("William Shakespeare is ")

for token in handle:
    print(token.delta, end="", flush=True)

stream_complete 也可用作异步方法 astream_complete

聊天接口#

LLM 类还实现了 chat 方法,它允许您进行更复杂的交互。

messages = [
    ChatMessage(role="system", content="You are a helpful assistant."),
    ChatMessage(role="user", content="Tell me a joke."),
]
chat_response = llm.chat(messages)

stream_chatastream_chat 也可用。

指定模型#

许多 LLM 集成提供了不止一个模型。您可以通过将 model 参数传递给 LLM 构造函数来指定模型

llm = OpenAI(model="gpt-4o-mini")
response = llm.complete("Who is Laurie Voss?")
print(response)

多模态 LLM#

一些 LLM 支持多模态聊天消息。这意味着您可以传入文本和其他模态(图像、音频、视频等)的混合内容,LLM 将处理它。

目前,LlamaIndex 使用内容块在 ChatMessages 中支持文本、图像和音频。

from llama_index.core.llms import ChatMessage, TextBlock, ImageBlock
from llama_index.llms.openai import OpenAI

llm = OpenAI(model="gpt-4o")

messages = [
    ChatMessage(
        role="user",
        blocks=[
            ImageBlock(path="image.png"),
            TextBlock(text="Describe the image in a few sentences."),
        ],
    )
]

resp = llm.chat(messages)
print(resp.message.content)

工具调用#

一些 LLM(OpenAI、Anthropic、Gemini、Ollama 等)直接通过 API 调用支持工具调用——这意味着无需特定的提示词和解析机制即可调用工具和函数。

from llama_index.core.tools import FunctionTool
from llama_index.llms.openai import OpenAI


def generate_song(name: str, artist: str) -> Song:
    """Generates a song with provided name and artist."""
    return {"name": name, "artist": artist}


tool = FunctionTool.from_defaults(fn=generate_song)

llm = OpenAI(model="gpt-4o")
response = llm.predict_and_call(
    [tool],
    "Pick a random song for me",
)
print(str(response))

有关更高级工具调用的更多详细信息,请查看使用 OpenAI 的深入指南。同样的方法适用于支持工具/函数(例如 Anthropic、Gemini、Ollama 等)的任何 LLM。

您可以在工具指南中了解有关工具和代理的更多信息。

可用的 LLM#

我们支持与 OpenAI、Anthropic、Mistral、DeepSeek、Hugging Face 等数十种集成的连接。查看我们的 LLM 模块指南 以获取完整列表,包括如何运行本地模型。

提示

有关隐私和 LLM 使用的一般说明,请参阅隐私页面

使用本地 LLM#

LlamaIndex 不仅支持托管的 LLM API;您还可以在本地运行本地模型,例如 Meta 的 Llama 3。例如,如果您已安装并运行 Ollama

from llama_index.llms.ollama import Ollama

llm = Ollama(model="llama3.3", request_timeout=60.0)

请参阅定制 LLM 的操作指南,了解有关使用和配置 LLM 模型的更多详细信息。