LLM
LLM管道通过大型语言模型(LLM)运行提示。该管道根据模型路径自动检测LLM框架。
示例
以下展示了一个使用此管道的简单示例。
from txtai import LLM
# 创建LLM管道
llm = LLM()
# 运行提示
llm(
"""
使用提供的上下文回答以下问题。
问题:
txtai有哪些应用?
上下文:
txtai是一个用于语义搜索和由语言模型驱动的工作流的开源平台。
"""
)
# 也支持聊天消息
llm([
{"role": "system", "content": "你是一个友好的助手。"},
{"role": "user", "content": "回答以下问题..."}
])
LLM管道自动检测底层LLM框架。这也可以手动设置。
有关LiteLLM模型可用的选项,请参阅LiteLLM文档。llama.cpp模型支持HF Hub上的本地和远程GGUF路径。
from txtai import LLM
# Transformers
llm = LLM("meta-llama/Meta-Llama-3.1-8B-Instruct")
llm = LLM("meta-llama/Meta-Llama-3.1-8B-Instruct", method="transformers")
# llama.cpp
llm = LLM("microsoft/Phi-3-mini-4k-instruct-gguf/Phi-3-mini-4k-instruct-gguf")
llm = LLM("microsoft/Phi-3-mini-4k-instruct-gguf/Phi-3-mini-4k-instruct-gguf",
method="llama.cpp")
# LiteLLM
llm = LLM("ollama/llama3.1")
llm = LLM("ollama/llama3.1", method="litellm")
# 自定义Ollama端点
llm = LLM("ollama/llama3.1", api_base="http://localhost:11434")
# 自定义OpenAI兼容端点
llm = LLM("openai/llama3.1", api_base="http://localhost:4000")
# LLM API - 还必须通过环境变量设置API密钥
llm = LLM("gpt-4o")
llm = LLM("claude-3-5-sonnet-20240620")
模型可以外部加载并传递给管道。这对于Transformers尚不支持或需要特殊初始化的模型很有用。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from txtai import LLM
# 加载Phi 3.5-mini
path = "microsoft/Phi-3.5-mini-instruct"
model = AutoModelForCausalLM.from_pretrained(
path,
torch_dtype=torch.bfloat16,
)
tokenizer = AutoTokenizer.from_pretrained(path)
llm = LLM((model, tokenizer))
有关更多详细示例,请参阅以下链接。
笔记本 | 描述 | |
---|---|---|
使用LLM进行提示驱动的搜索 | 使用大型语言模型(LLM)进行嵌入引导和提示驱动的搜索 | |
提示模板和任务链 | 构建模型提示并将任务连接在一起的工作流 | |
使用txtai构建RAG管道 | 检索增强生成指南,包括如何创建引用 | |
集成LLM框架 | 集成llama.cpp、LiteLLM和自定义生成框架 | |
使用语义图和RAG生成知识 | 使用语义图和RAG进行知识探索和发现 | |
使用LLM构建知识图谱 | 使用LLM驱动的实体提取构建知识图谱 | |
使用图路径遍历的高级RAG | 图路径遍历以收集用于高级RAG的复杂数据集 | |
使用引导生成的高级RAG | 检索增强和引导生成 | |
使用llama.cpp和外部API服务的RAG | 带有额外向量和LLM框架的RAG | |
txtai如何实现RAG | 创建RAG流程、API服务和Docker实例 |
配置驱动的示例
管道可以通过Python或配置运行。管道可以使用管道的小写名称在配置中实例化。配置驱动的管道通过工作流或API运行。
config.yml
# 使用小写类名创建管道
llm:
# 使用工作流运行管道
workflow:
llm:
tasks:
- action: llm
与上述Python示例类似,底层Hugging Face管道参数和模型参数可以在管道配置中设置。
llm:
path: microsoft/Phi-3.5-mini-instruct
torch_dtype: torch.bfloat16
使用工作流运行
from txtai import Application
# 使用工作流创建并运行管道
app = Application("config.yml")
list(app.workflow("llm", [
"""
使用提供的上下文回答以下问题。
问题:
txtai有哪些应用?
上下文:
txtai是一个用于语义搜索和由语言模型驱动的工作流的开源平台。
"""
]))
使用API运行
CONFIG=config.yml uvicorn "txtai.api:app" &
curl \
-X POST "http://localhost:8000/workflow" \
-H "Content-Type: application/json" \
-d '{"name":"llm", "elements": ["回答以下问题..."]}'
方法
管道的Python文档。
__init__(path=None, method=None, **kwargs)
Creates a new LLM.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path
|
model path |
None
|
|
method
|
llm model framework, infers from path if not provided |
None
|
|
kwargs
|
model keyword arguments |
{}
|
Source code in txtai/pipeline/llm/llm.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
__call__(text, maxlength=512, stream=False, **kwargs)
Generates text. Supports the following input formats:
- String or list of strings
- List of dictionaries with
role
andcontent
key-values or lists of lists
Parameters:
Name | Type | Description | Default |
---|---|---|---|
text
|
text|list |
required | |
maxlength
|
maximum sequence length |
512
|
|
stream
|
stream response if True, defaults to False |
False
|
|
kwargs
|
additional generation keyword arguments |
{}
|
Returns:
Type | Description |
---|---|
generated text |
Source code in txtai/pipeline/llm/llm.py
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|