赞
踩
有关我们支持的大语言模型列表及其功能比较,请查看我们的大语言模型模块指南。
构建基于 LLM 的应用程序时的第一步是决定使用哪个 LLM;也可以使用多个。
LLM 可用于管道的多个不同阶段:
LlamaIndex 为大量不同的 LLM 提供统一接口,允许您将您选择的任何 LLM 传递到管道的任何阶段。它可以像这样简单:
from llama_index.llms.openai import OpenAI
response = OpenAI().complete("Paul Graham is ")
print(response)
通常,您将实例化 LLM 并将其传递到 Settings,然后将其传递到管道的其他阶段,如下例所示:
from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
Settings.llm = OpenAI(temperature=0.2, model="gpt-4")
# 加载可读文本
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(
documents,
)
在本例中,您已实例化 OpenAI 并将其自定义为使用 gpt-4 模型而不是默认的 gpt-3.5-turbo,并且还修改了温度。 VectorStoreIndex 现在将使用 gpt-4 来回答查询时的问题。
设置(Settings)是一组配置数据,您可以将其传递到 LlamaIndex 的不同部分。您可以了解有关设置以及如何自定义它的更多信息。
LlamaIndex 不仅支持托管的 LLM API;您还可以在本地运行本地模型,例如 Llama2。
例如,如果您安装并运行 Ollama:
from llama_index.llms.ollama import Ollama
from llama_index.core import Settings
Settings.llm = Ollama(model="llama3", request_timeout=60.0)
有关更多详细信息,请参阅自定义大语言模型的操作方法。
注意:这里的model="llama3"参数,可以通过ollama list
来查看,换成自己本地ollama拉(pull)下来的模型。
当然也可以使用huggeface中的模型:
Settings.llm = HuggingFaceLLM(
model_name="HuggingFaceH4/zephyr-7b-beta",
tokenizer_name="HuggingFaceH4/zephyr-7b-beta",
context_window=3900,
max_new_tokens=256,
generate_kwargs={"temperature": 0.7, "top_k": 50, "top_p": 0.95},
messages_to_prompt=messages_to_prompt,
completion_to_prompt=completion_to_prompt,
device_map="auto",
)
这里的model_name给出的模型可以是下载下来并保存在本地的模型,只需要给出本地模型的路径即可。
from llama_index.core.llms import ChatMessage
from llama_index.llms.ollama import Ollama
# ollama
llm = Ollama(model="llama3", request_timeout=360.0)
# questions
messages = [
ChatMessage(role="user", content="What is your name"),
]
resp = llm.chat(messages)
print(resp)
我在16C32G的机器上运行以上代码,运行了大约几分钟时间,得到以下输出:
assistant: I don't have a personal name. I'm an AI designed to assist and communicate with humans, so I don't have a personal identity or self-awareness. My purpose is to provide information, answer questions, and help users like you with their queries. I exist solely as a digital entity, and my "name" is simply "Assistant" or "AI" - no specific name assigned to me!
从以上反馈来看,该模型的输出还是相对比较好的。
另外,要注意,messages这个参数可以输入多个角色和问题,类似于这样:
messages = [
ChatMessage(role="user", content="who are you?"),
ChatMessage(role="user", content="What is your name?"),
]
默认情况下,LlamaIndex 附带了一组经过实战检验的内置提示,可处理让特定 LLM 正确处理和格式化数据的棘手工作。这是使用 LlamaIndex 的最大好处之一。如果需要,您可以自定义提示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。