在使用大模型进行prompt 训练时,自己做的相关笔记。
本文以openai<1.0版为例。
定义调用openai大模型的函数 get_completion()
- def get_completion(prompt, model="gpt-3.5-turbo"):
- messages = [{"role": "user", "content": prompt}]
- response = openai.ChatCompletion.create(
- model=model,
- messages=messages,
- temperature=0, # 模型输出的随机性,0 表示随机性最小
- )
- print(response)
- return response.choices[0].message["content"]
在openai.ChatCompletion.create函数中,还有以下这些参数:
- response = openai.ChatCompletion.create(
- model=model,
- messages=_session,
- # 以下默认值都是官方默认值
- temperature=1, # 生成结果的多样性 0~2之间,越大越随机,越小越固定
- stream=False, # 数据流模式,一个个字接收
- top_p=1, # 随机采样时,只考虑概率前百分之多少的 token。不建议和 temperature 一起使用
- n=1, # 一次生成 n 条结果
- max_tokens=100, # 每条结果最多多少个 token(超过截断)
- presence_penalty=0, # 对出现过的 token 的概率进行降权
- frequency_penalty=0, # 对出现过的 token 根据其出现过的频次,对其的概率进行降权
- logit_bias={}, # 对指定 token 的采样概率手工加/降权,不常用
- )
下面就开始写prompt中的内容,prompt中的内容通常包含:
- • 角色: 定义一个最匹配任务的角色。
- • 指示{instruction}:对任务进行描述
- • 上下文{context}: 给出与任务相关的其它背景信息 (尤其在多轮交互中)
- • 例子{example}: 必要时给出举例
- • 输入{input_text}:任务的输入信息;在提示词中明确的标识出输入
- • 输出{output_format}: 输出的格式描述,比如 (JSON、XML)
对于以上的内容都可以在propmt中定义。
然后,把各个部分都写到propmt中即可,
- prompt = f"""
-
- {instruction}
-
- {output_format}
-
- {context}
-
- {example}
-
- # 用户输入
- {input_text}
-
- """
有很多的方法可以调优
在实际应用的过程中,对于prompt的训练还有很多的方法,需要一点一点实践。
下面的链接是官方给的prompt教程,一起学起来吧!!!🥝🥝🥝
Prompt Engineering Guide | Learn Prompting: Your Guide to Communicating with AI
我是大模型的初学者,慢慢完善,欢迎大佬指点一二,欢迎同学一起学习。🍭🍭🍭