
【LangChain入门】1-DeepSeek简单对话与联网搜索
以本篇开始快速实践入门。
·
以本篇开始快速实践入门。
资料概述
官网
- Github:https://github.com/langchain-ai/langchain
- LangChain官网: https://python.langchain.com/docs/introduction/
- LangChain中文网:https://www.langchain.com.cn/docs/introduction/
- LangChain中文网2:http://doc.cnlangchain.com/getting_started.html
大佬的笔记
https://liaokong.gitbook.io/llm-kai-fa-jiao-cheng
https://www.studywithgpt.com/zh-cn/topics/langchain
配置deepseek
基本概念
LangChain链接大模型与数据源,与LLM进行交互。
LLM与数据
-
数据加载
使用Loader加载起加载各类型数据,数据转换成Document对象。
与LLM进行交互时,发送给LLM的文本有字符数量限制,使用Text Spltters进行文本分割,具体是分割Document对象。 -
数据转换
加载进来的数据Document对象需要进行向量化转换,因为数据相关性搜索是向量运算。
转换向量的方式为转存数据到向量数据库。 -
任务处理
任务以Chain形式存在,Agent可以将任务分解成多个任务交由不同工具处理。
图来自https://liaokong.gitbook.io/llm-kai-fa-jiao-cheng#vectorstores-xiang-liang-shu-ju-ku -
Embedding
用于衡量文本的相关性。这个也是 OpenAI API 能实现构建自己知识库的关键所在。
入门实战
环境准备
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,去官网https://serpapi.com/ 注册并生成key。
还有一个tavily。暂时没用过。
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()
更多推荐
所有评论(0)