Outlines 是一个用于受限语言生成的 Python 库。它为各种语言模型提供统一接口,并允许使用正则表达式匹配、类型约束、JSON 模式和上下文无关语法等技术进行结构化生成。Outlines 支持多种后端,包括:
- Hugging Face Transformers
- llama.cpp
- vLLM
- MLX
安装和设置
要在 LangChain 中使用 Outlines,您需要安装 Outlines 库:- 对于 Transformers:
pip install transformers torch datasets - 对于 llama.cpp:
pip install llama-cpp-python - 对于 vLLM:
pip install vllm - 对于 MLX:
pip install mlx
LLM
要将 Outlines 作为 LangChain 中的 LLM 使用,您可以使用Outlines 类:
聊天模型
要将 Outlines 作为 LangChain 中的聊天模型使用,您可以使用ChatOutlines 类:
模型配置
Outlines 和 ChatOutlines 类共享相似的配置选项。
模型标识符
model 参数可以是:
- Hugging Face 模型名称(例如,“meta-llama/Llama-2-7b-chat-hf”)
- 模型的本地路径
- 对于 GGUF 模型,格式为“repo_id/file_name”(例如,“TheBloke/Llama-2-7B-Chat-GGUF/llama-2-7b-chat.Q4_K_M.gguf”)
后端选项
backend 参数指定要使用的后端:
"transformers":用于 Hugging Face Transformers 模型(默认)"llamacpp":用于使用 llama.cpp 的 GGUF 模型"transformers_vision":用于视觉语言模型(例如 LLaVA)"vllm":用于使用 vLLM 库的模型"mlxlm":用于使用 MLX 框架的模型
结构化生成
Outlines 提供多种结构化生成方法:-
正则表达式匹配:
这将确保生成的文本与指定的正则表达式模式匹配(在本例中为有效的 IP 地址)。
-
类型约束:
这会将输出限制为有效的 Python 类型(int、float、bool、datetime.date、datetime.time、datetime.datetime)。
-
JSON Schema:
这可确保生成的输出符合指定的 JSON 模式或 Pydantic 模型。
-
上下文无关语法:
这会生成符合 EBNF 格式的指定上下文无关语法的文本。
使用示例
LLM 示例
聊天模型示例
流式传输示例
结构化输出示例
附加功能
分词器访问
您可以访问模型的基础分词器:以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。