LangGraph集成DeepSeek实现AI对话

本文介绍如何使用AI开源框架 LangGraph,集成调用DeepSeek大模型,实现AI对话功能,并给出Python示例代码。

一、LangGrap是什么

LangGrapLangGrap是一个用于构建可控代理的低级编排框架。langchain 提供集成和可组合组件来简化 LLM 应用程序开发,而 LangGraph 库则支持代理编排,提供可定制的架构、长期内存和人机协同功能,以可靠地处理复杂任务。LangGraph 专为希望构建功能强大、适应性强的 AI 代理的开发人员而构建。虽然 LangGraph 可以独立使用,但它也可以与任何 LangChain 产品无缝集成,为开发人员提供一整套用于构建代理的工具。

二、前提条件

 1、Python运行环境安装。建议使用Python3.10以上版本,本示例使用了 Python 3.12.9版本。

2、Python开发工具安装。本人是vue\Java\python多种语言开发,所以使用了 IntelliJ IDEA开发工具。读者可以根据个人习惯选择合适的Python开发工具,比如:PyCharm、VS Code。

3、注册DeepSeek,获得api_key。访问deepseek的AI开放平台完成注册:https://platform.deepseek.com。 

三、代码实现

1、创建python工程

首先,通过开发工具创建一个python工程。这一步很简单,不再描述。

接着,激活虚拟环境项目目录,并通过以下命令创建并激活虚拟环境:

python -m venv venv   #有的环境下命令是python3或者py

.\venv\Scripts\activate  #windows下的激活命令

注意:如果是通过IDEA工具创建的Python工程,默认会创建并激活venv虚拟环境,就不再需要手动创建

2、pip安装依赖包

本示例使用LangGraph和DeepSeek,所以需要先安装这两个依赖包。

在虚拟环境命令窗口执行:

pip install -U langgraph

pip install -U langchain-deepseek

3、开发python代码

    通过Python开发工具,创建一个python文件,命名为langgraph-deepseek.py。源代码如下:

    from typing import Annotated
    from langchain_deepseek import ChatDeepSeek
    from typing_extensions import TypedDict
    
    from langgraph.graph import StateGraph
    from langgraph.graph.message import add_messages
    
    class State(TypedDict):
        messages: Annotated[list, add_messages]
    
    # 初始化状态图
    graph_builder = StateGraph(State)
    
    # 初始化 DeepSeek 大模型客户端
    llm = ChatDeepSeek(
        model="deepseek-chat",  # 指定 DeepSeek 的模型名称
        api_key="sk-e508ba61639640848060a1a2c1ee7b17"  # 替换为您自己的 DeepSeek API 密钥
    )
    
    def chatbot(state: State):
        # 调用 DeepSeek 大模型生成回复
        return {"messages": [llm.invoke(state["messages"])]}
    
    # 添加节点到状态图
    graph_builder.add_node("chatbot", chatbot)
    graph_builder.set_entry_point("chatbot")  # 设置入口点
    graph_builder.set_finish_point("chatbot")  # 设置结束点
    
    # 编译状态图
    graph = graph_builder.compile()
    
    def stream_graph_updates(user_input: str):
        # 构造对话历史,包含系统提示词和用户输入
        messages = [
            {"role": "system", "content": "你是一个有创意的助手,擅长根据用户问题提供有趣且相关的内容。输出内容长度不超过100个字。"},
            {"role": "user", "content": user_input},
        ]
    
        # 流式输出模型生成的回复
        for event in graph.stream({"messages": messages}):
            for value in event.values():
                print("Assistant:", value["messages"][-1].content)
    
    while True:
        try:
            # 获取用户输入
            user_input = input("User: ")
            if user_input.lower() in ["quit", "exit", "q"]:
                print("Goodbye!")
                break
    
            # 调用流式更新函数
            stream_graph_updates(user_input)
        except Exception as e:
            # 捕获异常并提供默认输入
            print("发生错误,尝试默认问题...")
            user_input = "What do you know about LangGraph?"
            print("User: " + user_input)
            stream_graph_updates(user_input)
            break

    四、测试运行

    运行该python文件,进行AI对话:

    ### Spring Boot 整合 Deepseek 实现 AI 对话 为了在 Spring Boot 项目中集成 Deepseek实现 AI 对话功能,需按照如下方法设置并编写代码。 #### 1. 添加依赖 首先,在 `pom.xml` 文件中添加必要的 Maven 依赖来支持 HTTP 请求和其他所需的功能: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- JSON 处理 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> ``` #### 2. 配置文件修改 编辑项目的配置文件 (`application.properties`) 来指定 Deepseek API 的基本信息[^2]: ```properties # 必填项 spring.ai.openai.api-key=your-apikey spring.ai.openai.base-url=https://api.deepseek.com # 模型选择(本例采用对话模型) spring.ai.openai.chat.options.model=deepseek-chat ``` #### 3. 创建服务类 创建一个新的 Java 类用于封装与 Deepseek 进行交互的方法。这里提供了一个简单的例子展示如何发送消息给聊天机器人并接收回复: ```java @Service public class ChatService { @Value("${spring.ai.openai.api-key}") private String apiKey; @Value("${spring.ai.openai.base-url}") private String baseUrl; public ResponseEntity<String> sendMessage(String message) { RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setBearerAuth(apiKey); HttpEntity<String> entity = new HttpEntity<>("{\"message\": \"" + message + "\"}", headers); return restTemplate.exchange( baseUrl + "/v1/chat/completions", HttpMethod.POST, entity, String.class ); } } ``` #### 4. 构建控制器接口 最后一步是定义 RESTful Web Service 接口以便前端可以调用此服务发起请求。下面是一个基本的例子说明怎样暴露一个端点供外部访问: ```java @RestController @RequestMapping("/chat") public class ChatController { @Autowired private ChatService chatService; @PostMapping("/send") public ResponseEntity<?> send(@RequestBody Map<String, Object> body){ String userMessage = (String)body.get("message"); ResponseEntity<String> response = this.chatService.sendMessage(userMessage); return new ResponseEntity<>(response.getBody(), HttpStatus.OK); } } ``` 通过上述步骤即可完成基于 Spring Boot 和 Deepseek 的简单 AI 聊天应用开发工作。当然实际生产环境中还需要考虑更多因素如安全性、性能优化等方面的内容。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    大龄码农有梦想

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值