欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > LLM大模型实践11-问答系统

LLM大模型实践11-问答系统

2025/1/14 3:16:43 来源:https://blog.csdn.net/u010479989/article/details/145100924  浏览:    关键词:LLM大模型实践11-问答系统

语言模型

response = get_completion("中国的首都是哪里?")

print(response)

对于一个句子,语言模型会 先使用分词器将其拆分为一个个 token ,而不是原始的单词。对于生僻词,可能会拆分为多个 token 。 这样可以大幅降低字典规模,提高模型训练和推断的效率。

TOKEN

# 为了更好展示效果,这里就没有翻译成中文的 Prompt

# 注意这里的字母翻转出现了错误,吴恩达老师正是通过这个例子来解释 token 的计算方式

response = get_completion("Take the letters in lollipop \

and reverse them")

print(response)

这时可以通过在字母间添加分隔,让每个字母成为一个token,以帮助模型准确理解词中的字母顺序。

response = get_completion("""Take the letters in \

 l-o-l-l-i-p-o-p and reverse them""")

print(response)

因此,语言模型以 token 而非原词为单位进行建模,这一关键细节对分词器的选择及处理会产生重大影 响。开发者需要注意分词方式对语言理解的影响,以发挥语言模型最大潜力。

Helper function 辅助函数 (提问范式)

语言模型提供了专门的“提问格式”,可以更好地发挥其理解和回答问题的能力。本章将详细介绍这种格式 的使用方法。

这种提问格式区分了“系统消息”和“用户消息”两个部分。系统消息是我们向语言模型传达讯息的语句,用 户消息则是模拟用户的问题。

例如: 

系统消息:你是一个能够回答各类问题的助手。 

用户消息:太阳系有哪些行星? 

通过这种提问格式,我们可以明确地角色扮演,让语言模型理解自己就是助手这个角色,需要回答问 题。这可以减少无效输出,帮助其生成针对性强的回复。本章将通过OpenAI提供的辅助函数,来演示如 何正确使用这种提问格式与语言模型交互。掌握这一技巧可以大幅提升我们与语言模型对话的效果,构 建更好的问答系统。

def get_completion_temperature_v3(messages, 

    model="gpt-3.5-turbo", 

    temperature=0, 

    max_tokens=500):

    '''

    封装一个支持更多参数的自定义访问 OpenAI GPT3.5 的函数

    参数: 

    messages: 这是一个消息列表,每个消息都是一个字典,包含 role(角色)和 content(内容)。角

    色可以是'system'、'user' 或 'assistant’,内容是角色的消息。

    model: 调用的模型,默认为 gpt-3.5-turbo(ChatGPT),有内测资格的用户可以选择 gpt-4

    temperature: 这决定模型输出的随机程度,默认为0,表示输出将非常确定。增加温度会使输出更随

    机。

    max_tokens: 这决定模型输出的最大的 token 数。

    '''

    response = openai.chat.completions.create(

    model=model,

    messages=messages,

    temperature=temperature, # 这决定模型输出的随机程度

    max_tokens=max_tokens, # 这决定模型输出的最大的 token 数

    )

return response.choices[0].message.content

messages =  [  

{'role':'system', 

'content':'你是一个助理, 并以 Seuss 苏斯博士的风格作出回答。'},    

{'role':'user', 

'content':'就快乐的小鲸鱼为主题给我写一首短诗'},  

response = get_completion_temperature_v3(messages, temperature=1)

print(response)

下面让我们再看一个例子:

# 长度控制

messages =  [  

{'role':'system',

 'content':'你的所有答复只能是一句话'},    

{'role':'user',

 'content':'写一个关于快乐的小鲸鱼的故事'},  

response = get_completion_temperature_v3(messages, temperature =1)

print(response)

将以上两个例子结合起来:

# 以上结合

messages =  [  

{'role':'system',

 'content':'你是一个助理, 并以 Seuss 苏斯博士的风格作出回答,只回答一句话'},    

{'role':'user',

 'content':'写一个关于快乐的小鲸鱼的故事'},

 ] 

response = get_completion_temperature_v3(messages, temperature =1)

print(response)

我们在下面定义了一个 get_completion_and_token_count 函数,它实现了调用 OpenAI 的 模型生成聊 天回复, 并返回生成的回复内容以及使用的 token 数量。

def get_completion_temperature_v4(messages, 

    model="gpt-3.5-turbo", 

    temperature=0, 

    max_tokens=500):

    openai.api_key = "sk-FMJLv2FFa3ZnsrosNjgKcyRspXIcHFHbcAFiQAtffA5IZVCs"

    

    openai.base_url = "https://api.chatanywhere.org/v1"

    """

    使用 OpenAI 的 GPT-3 模型生成聊天回复,并返回生成的回复内容以及使用的 token 数量。

    参数:

    messages: 聊天消息列表。

    model: 使用的模型名称。默认为"gpt-3.5-turbo"。

    temperature: 控制生成回复的随机性。值越大,生成的回复越随机。默认为 0。

    max_tokens: 生成回复的最大 token 数量。默认为 500。

    返回:

    content: 生成的回复内容。

    token_dict: 包含'prompt_tokens'、'completion_tokens'和'total_tokens'的字典,分别

    表示提示的 token 数量、生成的回复的 token 数量和总的 token 数量。

    """

    response = openai.chat.completions.create(

    model=model,

    messages=messages,

    temperature=temperature, 

    max_tokens=max_tokens,

    )

    content = response.choices[0].message.content

    token_dict = {

    'prompt_tokens':response.usage.prompt_tokens,

    'completion_tokens':response.usage.completion_tokens,

    'total_tokens':response.usage.total_tokens,

    }

return content, token_dict

messages =  [  

{'role':'system', 

'content':'你是一个助理, 并以 Seuss 苏斯博士的风格作出回答。'},    

{'role':'user', 

'content':'就快乐的小鲸鱼为主题给我写一首短诗'},  

response, token_dict = get_completion_temperature_v4(messages)

print(response)

打印 token 字典看一下使用的 token 数量,我们可以看到

在AI应用开发领域,Prompt技术的出现无疑是一场革命性的变革。然而,这种变革的重要性并未得到广 泛的认知和重视。传统的监督机器学习工作流程中,构建一个能够分类餐厅评论为正面或负面的分类 器,需要耗费大量的时间和资源。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com