一、概念

LLM大语言模型

  • BERT:Bidirectional Encoder Representations from Transformers
  • GPT3:Generative Pre-trained Transformer 3
  • T5:Text-to-Text Transfer Transformer,基于Transformer架构的文本生成模型

提示工程,使提问更加清晰

RAG(Retrival-Augmented Generation检索增强生成),结合信息检索和生成式AI的技术架构,RAG 通过从外部知识库(如文档、数据库)中检索相关信息,并将其作为上下文输入给 LLM(大型语言模型),从而提高回答的准确性,减少幻觉问题

微调,可以增强模型能力

LangChain开源框架,允许开发人员将LLM与外部的计算和数据源结合起来

对比维度

通用大模型

推理大模型

实现

模式识别、统计关联

在通用大模型基础上使用强化学习、神经符号推理、元学习等,强化推理、分析、决策能力

计算效率

计算量小,响应速度快,适合高并发场景

计算量大,推理过程复杂,单次响应时间长

适用场景

适用于常规文本生成、创意写作、多轮对话、开放性问答等场景

适合多步逻辑推理任务,如数学推理、代码分析、复杂决策

提示词策略

需显式引导推理步骤,依赖提示语补偿短板

提示语更简洁,只需明确任务目标和需求

prompt

组成:目标(核心指令)、上下文(背景信息)、输入(具体数据)、输出(期望结果)、条件限制(注意事项)

原则:明确、简洁、具体、迭代

要素

描述

示例

目标

这一项是prompt的核心:明确告诉AI你希望它执行什么任务

  • 用Springboot实现Websocket的接入
  • 使用mermaid生成一个时序图

上下文

业务背景、技术栈等,提供更多的背景信息,帮助模型更好的理解任务

  • 你是一个资深Java代码开发工程师,从事GIS领域开发多年,业务上有一个判断服务区经纬度点是否在车辆行驶的右侧的场景。

输入要求

需要给模型提供的信息,比如参数信息、数据结构等

  • 当前能够拿到的信息有:服务区的经纬度、服务区内具体POI的经纬度、车辆在服务区前后一公里行驶的有序经纬度点(有不传的情况)、整条路线的起点和终点、POI的名称(名称中包含当前高速的方向,如:北京方向)

输出要求

期望AI生成的内容形式,如文本、代码、图像等

  • 请使用java代码实现,有多种实现请以表格的形式展示区别
  • 以markdown的形式产出整体流程的结构化文档

条件限制

对输出结果额外要求,比如字数、语气、风格、技术约束、性能要求等

  • 要求使用java语言实现
  • 代码需要尽可能的简洁,不同的逻辑需要拆分成不同的方法
  • 涉及到算法相关的代码部分需要尽可能的增加注释
  • 放到一个Utils类中提供一个方法对外暴露

二、学习路线

三、DeepSeek

# 安装
pip install OpenAI

# 使用
from openai import OpenAI

client = OpenAI(api_key="<token>", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

四、LangChain

https://python.langchain.com/docs/introduction/

等价于数据库领域的JDBC,作为连接和集成不同系统的桥梁,使LLMs不仅能处理文本,还能做私有数据连接、行动执行,扩展了应用范围和有效性

1、组件

  • Models模型:包装器允许连接到不同的LLM,如GPT-4、HuggingFace
  • Prompt Templates提示模板:避免硬编码输入,可以动态地将用户输入插入到模板中并发送给LLMs
  • Components组件:驱动,为LLMs提供接口封装、模板提示和信息检索索引
  • Chains链:将不同的组件组合起来解决特定的任务,比如在大量文本查找信息
  • Agents代理:使LLMs能与外部环境交互,比如通过API请求执行操作
  • Embedding嵌入:与VectorStores向量数据库结合使用,是数据表示和检索的手段,为模型提供必要的语言理解基础
  • Indexes索引:建立索引后帮助提取相关信息

2、原理

  1. 从用户提出的Question出发,通过Similarity Search(向量的余弦夹角)在一个大型数据库或向量空间找到相关的信息
  2. 得到的信息与原始Question结合后,由一个LLM分析产生一个Answer
  3. 这个Answer被用来指导一个Agent采取Action,调用API或与外部系统交互来完成任务

3、应用场景

  • 个人助手
  • 学习辅助
  • 数据分析和数据科学

4、安装

https://blog.csdn.net/qq_41969287/article/details/145620258

pip install langchain-core
pip install langchain-deepseek
pip install langchain-community #支持ChatHistory允许记住过去的互动,在回应后续问题时考虑
pip install langchain-chroma # langchain提供的内置向量数据库

5、langSmith

trace

# langsmith trace                            
os.environ["LANGSMITH_TRACING"]="true"
os.environ["LANGSMITH_ENDPOINT"]="https://api.smith.langchain.com"
os.environ["LANGSMITH_API_KEY"]="xx"
os.environ["LANGSMITH_PROJECT"]="langchainDeepseek"

6、langchain-deepseek使用

from langchain_deepseek import ChatDeepSeek
llm = ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    # other params...
)
messages = [
    (
        "system",
        "You are a helpful assistant that translates English to Chinese. Translate the user sentence.",
    ),
    ("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
ai_msg.content

7、聊天机器人

使用langchain_community保存聊天历史记录,定义config保存session_id,在模板中通过MessagesPlaceholder定义聊天内容的key

# 定义提示模板
prompt_template = ChatPromptTemplate.from_messages([
    ('system','你是一个乐于助人的助手,用{language}尽你所能回答所有问题。'),
    MessagesPlaceholder(variable_name="my_msg")
])
# 保存聊天历史记录
from langchain_community.chat_message_histories import ChatMessageHistory
store = {} # 所有用户的聊天记录都保存到store,key:sessionId,value:历史聊天记录
def get_session_history(session_id: str):
    if session_id not in store:
        store[session_id] = ChatMessageHistory()
    return store[session_id]
do_message = RunnableWithMessageHistory(
    chain,
    get_session_history,
    input_messages_key='my_msg' # 每次聊天时发送msg的key
    )
# 当前会话定义一个session_id
config = {'configurable':{'session_id':'sent by Yubin'}}
resp = do_message.invoke(
    input = {
    'my_msg':[HumanMessage(content = "你好,我是李宇彬,喜欢研究AI")],
    'language':'中文'
    },
    config = config)

8、向量数据库用于RAG

deepseek不提供embedding模型。。

五、python环境

先安装python3.11.1,安装uv python包管理工具

brew install pyenv
 pyenv install 3.11.1
 pyenv global 3.11.1
 pyenv versions
 pip3 install uv
 pyenv init >> .zprofile
# 可选安装
uv pip install ipython
uv pip install jupyter
#jupyter notebook
uv run --with jupyter jupyter lab #更好

brew install npm

六、RAG

Retrival-Augmented-Generation,检索增强生成

提问前:分片 -> 索引(embedding把文本转换成向量;调用api存到向量数据库)

提问后:召回 -> 重排 -> 生成

uv init
uv add sentence_transformers #加载embedding、cross-encoder模型 
uv add chromadb # 一个非常流行的向量数据库
uv add google-genai    #google的ai sdk,调用Gemini-2.5-flash必备
uv add python-dotenv    #把Gemini API key映射到环境变量

七、MCP

与外部工具交互

Logo

更多推荐