admin管理员组文章数量:1130349
- 提示词工程(大模型是没有记忆的,他的记忆都是我们一次性给的,即将之前的回复以及问题再一次传给大模型)
- 为了更好地与大模型沟通;就是探讨如何设计最佳的提示词
- 有种说法 prompt 是 AGI(Artificial General Intelligence;通用人工智能)时代的编程语言(个人感觉言过其实)
- 对话流程:
- 把输入的自然语言对话,转换成结构化的表示;是NLU(Natural Language Understanding:自然语言理解)
- 从结构化的表示,生成策略是 DST(Dialogue State Tracking:对话状态跟踪)到Policy
- 把策略转换成自然语言输出是 NLG(Natural Language Generate:自然语言生成)
- 一些特殊情况
- 提示词中加入:
NO COMMENTS. NO ACKNOWLEDGEMENTS有事说事,别bb - 提示词加入:
Let's think step by step让我们逐步思考;会把问题分解成多个步骤,然后逐步解决,使输出结果更加准确(会形成思维链 Chain-of-Thought)
- 提示词中加入:
- Prompt 中组成:
- 指令(Instruction):想要模型执行特定的的任务
- 上下文(Context):包含一些额外信息
- 输入数据(Input Data):用户输入内容或问题
- 输出指示器(Output Indicator):指定的输出类型或格式
from openai import OpenAI
client = OpenAI(
base_url='http:/127.0.0.1:11434/v1/',
api_key='ollama', # required but ignored
)
def get_completion(prompt, model="qwen2.5"):
message = [{'role': 'user', 'content': prompt}]
response = client.chat.completions.create(
model=model,
messages=message,
temperature=0 # 模型输出的随机性,0-2,越大越随机
)
return response.choices[0].message.content
# 任务描述
instruction = """
你的任务是识别用户对手机流量套餐产品的选择条件。
每种流量套餐产品包含三个属性:名称(name),月费价格(price),月流量(data)。
根据用户输入,识别用户在上述三种属性上的倾向。
"""
# 输出格式
output_format = """
以 JSON 格式输出。
1. name 字段的取值为string类型,取值必须为以下之一:经济套餐、畅游套餐、无限套餐、校园套餐 或 null
2. price的字段取值为一个结构体或null,包含两个字段:
(1) operator,string类型,取值范围:'<='(小于等于),'>='(大于等于),'=='(等于)
(2) value,int类型
3. data字段的取值为取值为一个结构体 或 null,包含两个字段:
(1) operator, string类型,取值范围:'<='(小于等于),'>='(大于等于),'=='(等于)
(2) value,int类型或者string类型,string类型只能是'无上限'
4. 用户的意图可以包含按price或data排序,以sort字段表示,取值为一个结构体
(1) 结构体中以"ordering"="descend"表示按降序排序,以"value"字段存储待排序的字段
(2) 结构体中以"ordering"="ascend"表示按升序排序,以"value"字段存储待排序的字段
只输出中只包含用户提及得字段,不要猜测任何用户未直接提及的字段,不输出值为null的字段
"""
examples = """
最便宜的套餐:{"sort":{"ordering"="ascend","value"="price"}}
有没有不限流量的:{"data":{"operator":"==","value"="无上限"}}
流量大的:{"sort":{"ordering"="descend","value"="data"}}
100G以上流量的套餐最便宜的是哪个:{"sort":{"ordering"="ascend","value"="price"}, {"data":{"operator":">=","value"="100"}}}
月费不超过200的:{"price":{"operator":"<=","value":200}}
就要月费180那个套餐:{"price":{"operator":"==","value":180}}
经济套餐:{"name":"经济套餐"}
""" # 很常用,效果特别好
# 用户输入
input_text = """
有没有便宜的套餐
"""
prompt = f"""
{instruction}
{output_format}
例如:
{examples}
用户输入:
{input_text}
NO COMMENTS. NO ACKNOWLEDGEMENTS
"""
res = get_completion(prompt=prompt)
print(res)
- 提示词工程(大模型是没有记忆的,他的记忆都是我们一次性给的,即将之前的回复以及问题再一次传给大模型)
- 为了更好地与大模型沟通;就是探讨如何设计最佳的提示词
- 有种说法 prompt 是 AGI(Artificial General Intelligence;通用人工智能)时代的编程语言(个人感觉言过其实)
- 对话流程:
- 把输入的自然语言对话,转换成结构化的表示;是NLU(Natural Language Understanding:自然语言理解)
- 从结构化的表示,生成策略是 DST(Dialogue State Tracking:对话状态跟踪)到Policy
- 把策略转换成自然语言输出是 NLG(Natural Language Generate:自然语言生成)
- 一些特殊情况
- 提示词中加入:
NO COMMENTS. NO ACKNOWLEDGEMENTS有事说事,别bb - 提示词加入:
Let's think step by step让我们逐步思考;会把问题分解成多个步骤,然后逐步解决,使输出结果更加准确(会形成思维链 Chain-of-Thought)
- 提示词中加入:
- Prompt 中组成:
- 指令(Instruction):想要模型执行特定的的任务
- 上下文(Context):包含一些额外信息
- 输入数据(Input Data):用户输入内容或问题
- 输出指示器(Output Indicator):指定的输出类型或格式
from openai import OpenAI
client = OpenAI(
base_url='http:/127.0.0.1:11434/v1/',
api_key='ollama', # required but ignored
)
def get_completion(prompt, model="qwen2.5"):
message = [{'role': 'user', 'content': prompt}]
response = client.chat.completions.create(
model=model,
messages=message,
temperature=0 # 模型输出的随机性,0-2,越大越随机
)
return response.choices[0].message.content
# 任务描述
instruction = """
你的任务是识别用户对手机流量套餐产品的选择条件。
每种流量套餐产品包含三个属性:名称(name),月费价格(price),月流量(data)。
根据用户输入,识别用户在上述三种属性上的倾向。
"""
# 输出格式
output_format = """
以 JSON 格式输出。
1. name 字段的取值为string类型,取值必须为以下之一:经济套餐、畅游套餐、无限套餐、校园套餐 或 null
2. price的字段取值为一个结构体或null,包含两个字段:
(1) operator,string类型,取值范围:'<='(小于等于),'>='(大于等于),'=='(等于)
(2) value,int类型
3. data字段的取值为取值为一个结构体 或 null,包含两个字段:
(1) operator, string类型,取值范围:'<='(小于等于),'>='(大于等于),'=='(等于)
(2) value,int类型或者string类型,string类型只能是'无上限'
4. 用户的意图可以包含按price或data排序,以sort字段表示,取值为一个结构体
(1) 结构体中以"ordering"="descend"表示按降序排序,以"value"字段存储待排序的字段
(2) 结构体中以"ordering"="ascend"表示按升序排序,以"value"字段存储待排序的字段
只输出中只包含用户提及得字段,不要猜测任何用户未直接提及的字段,不输出值为null的字段
"""
examples = """
最便宜的套餐:{"sort":{"ordering"="ascend","value"="price"}}
有没有不限流量的:{"data":{"operator":"==","value"="无上限"}}
流量大的:{"sort":{"ordering"="descend","value"="data"}}
100G以上流量的套餐最便宜的是哪个:{"sort":{"ordering"="ascend","value"="price"}, {"data":{"operator":">=","value"="100"}}}
月费不超过200的:{"price":{"operator":"<=","value":200}}
就要月费180那个套餐:{"price":{"operator":"==","value":180}}
经济套餐:{"name":"经济套餐"}
""" # 很常用,效果特别好
# 用户输入
input_text = """
有没有便宜的套餐
"""
prompt = f"""
{instruction}
{output_format}
例如:
{examples}
用户输入:
{input_text}
NO COMMENTS. NO ACKNOWLEDGEMENTS
"""
res = get_completion(prompt=prompt)
print(res)
版权声明:本文标题:promote Engine 提示词工程 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1763928848a2972313.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论