本地 LLM 函数调用
概述
local-llm-function-calling
项目旨在通过强制执行 JSON 架构和促进函数调用提示的制定来限制 Hugging Face 文本生成模型的生成,类似于 OpenAI 的函数调用功能,但实际上强制执行架构不同于 OpenAI。
该项目提供了一个 Generator
类,允许用户轻松生成文本,同时确保遵守提供的提示和 JSON 架构。通过使用 local-llm-function-calling
库,用户可以方便地控制文本生成模型的输出。它使用我自己快速草拟的 json-schema-enforcer
项目作为强制执行器。
功能
- 限制 Hugging Face 文本生成模型遵循 JSON 架构。
- 提供一个机制来制定函数调用提示,支持精确的数据提取和格式化。
- 通过用户友好的
Generator
类简化文本生成过程。
安装
要安装 local-llm-function-calling
库,请使用以下命令:
pip install local-llm-function-calling
使用方法
这是一个演示如何使用 local-llm-function-calling
的简单示例:
from local_llm_function_calling import Generator
# 定义一个函数和模型
functions = [
{
"name": "get_current_weather",
"description": "获取给定位置的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市和州,例如: San Francisco, CA",
"maxLength": 20,
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
]
# 使用 Hugging Face 模型和我们的函数初始化生成器
generator = Generator.hf(functions, "gpt2")
# 使用提示生成文本
function_call = generator.generate("今天布鲁克林的天气怎么样?")
print(function_call)
自定义约束
你不必使用我的提示方法;你可以自己设计提示和约束,仍然可以从约束生成中受益:
from local_llm_function_calling import Constrainer
from local_llm_function_calling.model.huggingface import HuggingfaceModel
# 定义你自己的约束
# (你也可以使用 local_llm_function_calling.JsonSchemaConstraint)
def lowercase_sentence_constraint(text: str):
# 必须返回 (is_valid, is_complete)
return [text.islower(), text.endswith(".")]
# 创建约束器
constrainer = Constrainer(HuggingfaceModel("gpt2"))
# 生成你的文本
generated = constrainer.generate("Prefix.\n", lowercase_sentence_constraint, max_len=10)
扩展和自定义
要扩展或自定义提示结构,你可以子类化 TextPrompter
类。这允许你根据你的具体要求修改提示生成过程。