提升大模型性能:利用Guidance技术实现输出的高可靠性与稳定性

guidance 是一个 Python 库,相比提示词方式或链式调用方式,可以更有效地控制和利用大型语言模型(如 GPT、BART 等)。 简单直观的语法,基于 Handlebars 模板,丰富的输出结构,具有函数调用、逻辑判断、控制流等功能,它的主要作用和优点包括:

1.  ** 简单直观的语法**:使用户能够轻松编写和理解代码,提高开发效率。
2.  ** 基于Handlebars模板**:Handlebars是一种流行的模板语言,允许用户在生成文本时嵌入逻辑和控制结构。
3.  ** 丰富的输出结构**:支持多种数据结构的输出,如JSON,XML等,使得生成的文本可以很容易地与其他系统或应用集成。
4.  ** 函数调用**:允许用户在生成文本的过程中调用自定义函数,增加了生成过程的灵活性。
5.  ** 逻辑判断**:支持if-else等逻辑判断语句,使得文本生成可以根据条件进行分支处理。
6.  ** 控制流**:支持循环和迭代等控制流结构,可以生成复杂的文本模式。

具体的实现办法

1.  **导入`guidance`库**:

     pythonimport guidance
     pythonguidance.llm = guidance.llms.OpenAI("text-davinci-003")
     pythonprogram = guidance("""...""")   
    ##定义模板, 使用`guidance`函数定义了一个模板字符串。这个模板包含了Handlebars语法,用于控制文本的生成。
    
2.  **模板内容**:

    *   `{{proverb}}`: 一个变量占位符,用于插入传入的谚语。
    *   `{{book}} {{chapter}}:{{verse}}`: 用于显示书籍、章节和经文的占位符。
    *   `{{gen 'rewrite' stop="\n-"}}`: 这是一个生成逻辑的占位符,用于生成文本,其中`'rewrite'`可能是一个自定义的生成函数,`stop="\n-"`指定了生成文本的结束条件。
    *   `{{#select 'chapter'}}...{{/or}}...{{/select}}`: 这是一个Handlebars的逻辑助记符,用于在多个选项中选择一个,这里用于选择章节号。

3.  **执行模板**:

    ```python
    pythonexecuted_program = program(
        proverb="Where there is no guidance, a people falls,\nbut in an abundance of counselors there is safety.",
        book="Proverbs",
        chapter=11,
        verse=14
    )
    ```

    通过调用之前定义的`program`函数,并传入具体的值,来执行模板。这里传入了谚语、书籍名称、章节和经文的值。


4.  **生成文本**: 执行上述代码后,`executed_program`将包含根据模板和传入的值生成的文本。根据模板中的指示,生成的文本可能会修改原始谚语,以适应模型指令的上下文,并在指定的章节和经文中插入生成的文本。

## 更简单易懂的示例

可以提供一个更简单易懂的示例来展示如何在guidance库中使用模板和生成函数。在这个例子中,我们将创建一个简单的模板,用于生成一段鼓励新手摄影师的文本。

import guidance
guidance.llm = guidance.llms.OpenAI("text-davinci-003")

# 定义一个简单的模板,用于生成鼓励新手摄影师的文本
template = """
新手摄影师,不要害怕犯错。记住,每位伟大的摄影师都是从基础开始的。

{{gen 'encouragement'}}

继续探索,不断学习,你的摄影之旅才刚刚开始。
"""

# 定义一个生成函数,用于生成鼓励话语
def encouragement():
    # 这里可以根据需要编写生成逻辑,例如随机选择一句鼓励话语
    encouragements = [
        "每一次快门的点击都是你成长的一部分。",
        "不要担心设备,创意才是摄影的灵魂。",
        "光线和角度可以改变一切,多尝试不同的视角。",
        "摄影是发现美的眼睛,保持好奇心,去发现那些被忽略的细节。"
    ]
    # 随机选择一句鼓励话语
    import random
    return random.choice(encouragements)

# 创建Guidance实例,传入模板和生成函数
program = guidance(template, functions={"encouragement": encouragement})

# 执行生成文本
executed_program = program()

# 打印生成的文本
print(executed_program)

运行输出:

新手摄影师,不要害怕犯错。记住,每位伟大的摄影师都是从基础开始的。

每一次快门的点击都是你成长的一部分。

继续探索,不断学习,你的摄影之旅才刚刚开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值