2. 提示学习&思维链

该部分介绍大模型的API调用与推理指南。

”AI在线求鼓励?大模型对一些问题的回答令人大跌眼镜,但它可能只是想要一句「鼓励」”https://mp.weixin.qq.com/s/LD5UL_CgDwUfPFb_lafGng

本教程目标

  1. 熟悉大语言模型的使用方式

  2. 掌握零样本和少样本提示工程

  3. 了解思维链推理技术

入门教程(Optional)

  1. 开发工具:VS Code:https://code.visualstudio.com/

  2. 利用Miniconda或Anaconda进行Python环境管理:https://docs.anaconda.com/free/miniconda/miniconda-install/

实践内容

1. 获得大模型调用权限(可任选一个注册;其中OpenAI需要科学手段)

通义千问:https://help.aliyun.com/zh/dashscope/developer-reference/quick-start

智谱AI:https://open.bigmodel.cn/

OpenAI:https://platform.openai.com/playground

其他:文心一言、百川等

*基本流程:开通服务获得API-KEY(获赠计算额度),使用API Key调用服务

2. 调用方式(以通义千问为例)

1. 通过GUI界面调用(适合案例测试)

进入模型体验中心测试:https://dashscope.console.aliyun.com/playground

2. 通过命令行调用(适合开发、规模化实验)

快速入门:https://help.aliyun.com/zh/dashscope/create-a-chat-foundation-model

普通调用:

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.htmlfrom http import HTTPStatus
import dashscope
def sample_sync_call():
    prompt_text = '用萝卜、土豆、茄子做饭,给我个菜谱。'
    resp = dashscope.Generation.call(
        model='qwen-turbo',
        prompt=prompt_text
    )
# The response status_code is HTTPStatus.OK indicate success,# otherwise indicate request is failed, you can get error code# and message from code and message.if resp.status_code == HTTPStatus.OK:
        print(resp.output)# The output textprint(resp.usage)# The usage informationelse:
        print(resp.code)# The error code.print(resp.message)# The error message.
sample_sync_call()

流式调用:

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html

import dashscope
def sample_sync_call_streaming():
    prompt_text = '用萝卜、土豆、茄子做饭,给我个菜谱。'
    response_generator = dashscope.Generation.call(
        model='qwen-turbo',
        prompt=prompt_text,
        stream=True,
        top_p=0.8)
    head_idx = 0
    for resp in response_generator:
        paragraph = resp.output['text']
        print("\r%s" % paragraph[head_idx:len(paragraph)], end='')
        if(paragraph.rfind('\n') != -1):
            head_idx = paragraph.rfind('\n') + 1
sample_sync_call_streaming()

3. 提示学习(Prompting)

  • 零样本提示:给出目标指令提示

  • 少样本提示:提供任务范例提示

4. 思维链提示

基本思路:模拟人类的思考过程,将多步骤推理问题分解成一系列中间步骤,进而实现问题分解和逐步求解

  • 附:GSM8K数据集:https://github.com/openai/grade-school-math

5. 观察&思考:

  1. 错误范例的影响:把少样本学习中的例子改成错误的答案,结果会发生变化吗? https://github.com/sunlab-osu/Understanding-CoT(ACL 2023)

  1. 自洽性提升推理结果:设置temperature大于0(如0.7),保持同样的输入,多次采样,生成多个推理路径和答案,最终选择答案出现最多的作为最终答案输出。 https://openreview.net/pdf?id=1PL1NIMMrw(ICLR 2023)

6. 思维链进阶(Optional)

  1. Auto-CoT自动思维链(ICLR 2023): https://github.com/amazon-science/auto-cot

  2. Sum-CoT摘要思维链(ACL 2023):https://github.com/Alsace08/SumCoT

  3. Critic结合工具校正结果(ICLR 2024):https://github.com/microsoft/ProphetNet/tree/master/CRITIC

  4. ReAct机器人操控(ICLR 2023):https://react-lm.github.io/

  5. 更多提示技术可见:https://www.promptingguide.ai/

注:上述工作均基于openai接口,需科学获取api_key。若无条件,可考虑将接口改成上述国产接口实验。

7. 安全应用(Optional)

  1. 智能体行为风险监测(ICLR 2024 Agent Workshop):https://rjudgebench.github.io/

8. 福利

  1. ChatGPT万能Prompt模板:https://github.com/f/awesome-chatgpt-prompts

  2. 用ChatGPT、Kimi克隆自己的写作风格:https://www.jiqizhixin.com/articles/2024-03-21-9

Last updated