使用 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_chat 和 astream_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 模型的更多详细信息。