LangChain快速筑基(带代码)P0-DeepSeek对话与联网搜索

欢迎来到啾啾的博客🐱。

记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。

有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

资料概述

官网

大佬的笔记

liaokong.gitbook.io/llm-kai-fa-... www.studywithgpt.com/zh-cn/topic...

配置deepseek

python.langchain.com/api_referen...

基本概念

LangChain链接大模型与数据源,与LLM进行交互。

LLM与数据

  • 数据加载 使用Loader加载起加载各类型数据,数据转换成Document对象。 与LLM进行交互时,发送给LLM的文本有字符数量限制,使用Text Spltters进行文本分割,具体是分割Document对象。

  • 数据转换 加载进来的数据Document对象需要进行向量化转换,因为数据相关性搜索是向量运算。 转换向量的方式为转存数据到向量数据库。

  • 任务处理 任务以Chain形式存在,Agent可以将任务分解成多个任务交由不同工具处理。 图来自liaokong.gitbook.io/llm-kai-fa-...

  • Embedding 用于衡量文本的相关性。这个也是 OpenAI API 能实现构建自己知识库的关键所在。

入门实战

环境准备

sql 复制代码
pip install langchain
pip install langchain-community
pip install google-search-results

对话DeepSeek与联网搜索

LangChain 支持的消息类型如下:

  • 'human': 人类消息
  • 'user': 用户消息
  • 'ai': AI 消息
  • 'assistant': 助手消息
  • 'function': 函数消息
  • 'tool': 工具消息
  • 'system': 系统消息
  • 'developer': 开发者消息

联网搜索需要借助serpapi的Google搜索api,去官网serpapi.com/ 注册并生成key。 还有一个tavily。暂时没用过。

python 复制代码
import os

from langchain_community.agent_toolkits.load_tools import load_tools

from langchain_deepseek import ChatDeepSeek

from langchain.agents import initialize_agent

from langchain.agents import AgentType

  
  

os.environ["DEEPSEEK_API_KEY"] = '你的ds-api key'

os.environ["SERPAPI_API_KEY"] = '你的 serpapi key'

  

def get_deepseek_key():

    key = os.getenv('DEEPSEEK_API_KEY')

    if key is None:

        raise ValueError("DEEPSEEK_API_KEY not found in environment variables.")

    return key

  

def get_serpapi_key():

    key = os.getenv('SERPAPI_API_KEY')

    if key is None:

        raise ValueError("SERPAPI_API_KEY not found in environment variables.")

    return key

  
  

def create_deepseek_llm():

    return ChatDeepSeek(

        model = "deepseek-chat",

        temperature=0,

        max_tokens=None,

        timeout=None,

        max_retries=2,

        api_key=get_deepseek_key()

    )

  

def create_tools(llm):

    # 加载 serpapi工具

    tools =load_tools(["serpapi"],llm= llm)

    # 如果搜索完想再计算一下可以这么写

    # tools = load_tools(['serpapi', 'llm-math'], llm=llm)

    # 如果搜索完想再让他再用python的print做点简单的计算,可以这样写

    # tools=load_tools(["serpapi","python_repl"])

    return tools

  

def create_agent():

    deepseek = create_deepseek_llm()

    tools = create_tools(deepseek)

    # 工具加载后都需要初始化,verbose 参数为 True,会打印全部的执行详情

    agent = initialize_agent(tools, deepseek, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

    return agent

  

def test_llm():

    llm = create_deepseek_llm()
    messages = [

        ("system","您是一个LangChain入门大师,代码助手"),

        ("human","你好,langchain集成deepseek。请问怎么联网搜索?")

    ]

    for chunk in llm.stream(messages):

        print(chunk.text(), end="")

  

def test_llm_with_internet():

    """

    测试llm联网搜索

    """

    print("测试deepseek联网聊天")

  

    messages = [

        ("system","您是一个LangChain入门大师,代码助手"),

        ("human","介绍一下长沙大模型岗位要求、技术站")

    ]

    agent = create_agent()

    agent.invoke(messages)

  

if __name__ == '__main__':

    test_llm_with_internet()
相关推荐
冬奇Lab8 小时前
RAG 系列(二):用 LangChain 搭建你的第一个 RAG Pipeline
人工智能·langchain·llm
dllmayday12 小时前
Milvus在LangChain中使用方法
人工智能·ai·langchain·milvus
倦王13 小时前
langchain 尚硅谷day4-5 Tool工具调用部分(function calling)
langchain
小陈的进阶之路14 小时前
LangChain/LangGraph对比
langchain
Flittly14 小时前
【LangGraph新手村系列】(3)PostgreSQL 持久化检查点:让状态跨越进程与重启
人工智能·python·langchain
JAVA面经实录91715 小时前
企业级java+LangChain4j-RAG系统 限流熔断降级
java·开发语言·分布式·langchain
hjxu201615 小时前
【LangGraph入门 3】精细控制之图的运行时配置和map-reduce
langchain·langgraph
hrhcode17 小时前
【LangGraph】二.State 和 Node 的设计细节
python·ai·langchain·langgraph·ai框架
Trouvaille ~17 小时前
零基础入门 LangChain 与 LangGraph(八):真正让 Agent“活起来”——持久化、记忆、人机交互与时间旅行
langchain·人机交互·agent·python3.11·持久化机制·langgraph·ai应用开发
abigale0318 小时前
LangChain:自定义模型・RAG 检索・Agent 原理笔记
langchain·llm·prompt·agent·rag·lcel