大模型及提示词

提示词工程


什么是RAG

RAG【Retrieval-Augmented Generation,检索增强生成】是对大模型语言模型输出进行优化,在原有强大能力的基础上,访问特定领域或组织的内部知识库,在无需重新训练的基础上得到和使用新的知识。

RAG的核心思想非常简单直白,就像它的名字一样:

  • 检索(Retrieva:在接收到用户的问题时,先不是直接生成答案,而是先去查阅资料
  • 增强(Augmented):在查阅资料"后,把资料和用户的问题一同提交给LLMI
  • 生成(Generation):LLM在生成答案时,参考上下文资料,从而生成更准确、更可靠、更有针对性的答案

RAG应用场景

  • 智能客服/聊网机器人:

    场景:用户咨询企业的产品、服务、政策等问题

    RAG价值:让机器人能够回答最新的产品信息、促销活动、售后政策等,而不是给出过时的信息。同时,可以接入企业内部知识库,回答更专业、更定制化的问题,提升客户满意度

    例子:银行的智能客服,可以接入最新的利率政策、理财产品信息;电商平台的客服,可以回答最新的商品库存、物流信息、售后服务等企业内部知识库/文档问答:

  • 内容创作/文章生成:

    场景:需要LLM生成新闻报道、研究报告、产品文案等需要事实依据的内容

    RAG价值:保证生成内容的准确性和时效性,避免LLM“胡编造”。同时,可以根据特定的知识库(例如,行业报告、专家访谈),生成更专业、更深入的内容

    例子:新闻机构可以利用RAG系统,快速生成基于最新新闻事件的报道;研究机构可以利用RAG系统,快速生成基于科研论文和数据的研究报告

什么是大模型

大模型(LargeModel)通常指参数规模巨大的深度学习模型,参数量通常在数十亿、数首亿基至数干亿级别。能够处理和学习海量数据,并从中提取更复杂、更抽象的特征和知识。在多种任务上展现出卓越的性育,无其在直然语言处理、计算机视觉等领域。

当深度学习模型规模扩护展到一定程度时,会观祭到一些在较小模型中不明显的涌现特性,例如*提升的法化性能、展现出更复杂的任务角解决能能力(在某些方面可被视为推理的初步形式)、以及一些表现出类似人类智能的行为模式

这些涌现特性使得大模型成为当前人工智能领域探索通用人工智能(AGI)的一个重要且备受关注的方向

什么是大语言模型

大语言模型(LargeLanguageModel,ILM)是专门用于处理和生成自然语言的大模型。专门训练用于理解和生成人类语言,例如文本生成、对话、翻译、文本摘要、问答等

自然语言虽然只是深度学习的众多应用方向之一,但是由于文学语言拥有极强大的表达能力、有海量的数据、其他模态内容能够方便的处理为文学,使得大语言模型有以下特点:

适合作为AI技术的人机交互

从海量资料中捕捉更多的知识

作为基础模型,支持多模态数据

预训练通用数据,再微调专业数据

进而在A技术的应用可以上下游分工,比如:

1.学术界:研究和改进大模型的训练方法
2.工业界:拥有数据和算力,根据研究文献训练出通用模型
3.商业领域:对通用模型进行微调或RAG,提供专业领域模型或Agent
4.应用层面:使用模型或Agent,完成业务上的需求和任务

目前,国内外知名模型

如何使用大模型

使用方式面向人群操作方式使用场景
在线应用普通用户提示词(Prompt)日常对话,信信息查询,内容创作等。
API开发人员函数调用(Function Calling)、智能体(AI Agent)构建智能应用,集成到现有系统,自动化工作流程。
模型文件专业人员模型微调(Fine-tuning)针对特定领域优化模型性能,定制化模型功能。
训练数据研究人员模型训练(Model Training)模型算法研究,新模型开发,性能benchmark测试改进。

Python API环境搭建及接入大模型

1、安装Python环境

2、安装大模型依赖库

pip install openai     #安装单个库
pip install -r requirements.txt   #安装多个库

3、创建环境变量

#放在环境变量中的好处是在代码中不会暴露密钥信息。
OPENAI_BASE_URL:接口地址
OPENAI_API_KEY:接口密钥

4、调用openai库

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
	model="deepseek-chat",#选择模型
	messages=[ #发送对话
        {
            "role":"system",  #对大模型的设定 
            "content":"所有的回答不得超过10个字"
        },
        {
            "role":"user",
            "content":"你是谁"
        }
	],
)
print(completion.choices[0].message.content) #输出结果

message消息对象

流式输出,是一个一个的输出,不是一次性输出。网页版的一般都是流式输出的。

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
	model="deepseek-chat",#选择模型
	messages=[ #发送对话
        {
            "role":"system",  #对大模型的设定 
            "content":"所有的回答不得超过10个字"
        },
        {
            "role":"user",
            "content":"你是谁"
        }
	],
    stream=true, #启用流式传输
)
for chunk in completion:
	print(chunk.choices[0].delta.content,end="") #逐个打印最新生成的内容

温度可以控制LLM生成文本的创造性和随机性,范围0-2,默认为1:

越接近0:生成的文本更保守、重复性高,更倾向于选择最有可能的Token。适合需要准确性和一致性的任务,例如事实、代码、数学相关等。
越接近2:生成的文本更创新、发散、重复性低,更倾向于选择不太常见但仍然合理的Token。适合需要创造性和灵感的任务,例如故事创作、头脑风暴等。

from openai import OpenAI
client = OpenAI()
for t in [0,0.3,0.6,0.9,1.2,1.5,1.7,2] #迭代不同的温度参数
    completion = client.chat.completions.create(
        model="deepseek-chat",#选择模型
        messages=[ #发送对话
            {
                "role":"system",  #对大模型的设定 
                "content":"所有的回答不得超过10个字"
            },
            {
                "role":"user",
                "content":"你好啊"
            }
        ],
        temperature=t,
    )
	print(completion.choices[0].message.content) #输出结果
    print("--------------------")

多轮对话:

人与人之间的对话时,我们会记住之前的对话内容,以便更好地理解和回应对方。LLM也会参考之前的对话内容(上下文)来理解问题并生成合适回复。
为了让LLM得到之前的对话内容,实现多轮对话,需要维护messages列表:每次对话轮都将用户的消息和Al 助手的回复追加到messages列表中。

from openai import OpenAI
client = OpenAI()

#使用变量保存历史记录
messages = [{"role":"user", "content":"1+1等于几"}]

#Round 1
response = client.chat.completions.create(
	model="deepseek-chat",#选择模型
    messages=messages
)
messages.append(response.choices[0].message) #把AI的回得加入列表
print(f"Messages Round 1: {messages}")


#Round 2
messages.append({"role":"user", "content":"再加1呢"}) #把新的问题加入列表
response = client.chat.completions.create(
	model="deepseek-chat",#选择模型
    messages=messages #发送列表,包含此前的对话内容。
)
messages.append(response.choices[0].message)
print(f"Messages Round 2: {messages}")


转载请注明出处:  https://www.cntworld.cn
智能工控 » 大模型及提示词

发表回复

提供最优质的资源集合

立即查看 了解详情
文章加载时间:2.211 秒