langchain+阿里云通义千问大模型判断用户输入语言的情绪

本文介绍了如何使用Python编程技术,结合langchain库和通义千问API,创建一个AI小助手,根据用户输入判断其情绪并给出相应的情感标签,如友好、沮丧、兴奋等,确保输出仅限英文且无换行符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎么让自己的AI小助手可以判断用户当前的情绪呢

根据情绪的判断去定义一些固定的回复模板

以下是实现过程: 

### 环境要求 python:3.11.4
### langchain_core==0.1.28
### langchain_community==0.0.25
### langchain==0.1.10
### qdrant_client == 1.7.1
### dashscope = 1.17.1
from langchain_community.llms import Tongyi
from langchain.agents import (
    load_tools,
    initialize_agent,
    AgentType,
)
from langchain.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder
from langchain.schema import StrOutputParser
import os
#通义千问的api-sk
os.environ["DASHSCOPE_API_KEY"] = "sk-xxxxxxxxxx"
def qingxu_chain(query:str):
        prompt = """根据用户的输入判断用户的情绪,回应的规则如下:
        1. 如果用户输入的内容偏向于负面情绪,只返回"depressed",不要有其他内容,否则将受到惩罚。
        2. 如果用户输入的内容偏向于正面情绪,只返回"friendly",不要有其他内容,否则将受到惩罚。
        3. 如果用户输入的内容偏向于中性情绪,只返回"default",不要有其他内容,否则将受到惩罚。
        4. 如果用户输入的内容包含辱骂或者不礼貌词句,只返回"angry",不要有其他内容,否则将受到惩罚。
        5. 如果用户输入的内容比较兴奋,只返回”upbeat",不要有其他内容,否则将受到惩罚。
        6. 如果用户输入的内容比较悲伤,只返回“depressed",不要有其他内容,否则将受到惩罚。
        7. 如果用户输入的内容比较开心,只返回"cheerful",不要有其他内容,否则将受到惩罚。
        8. 如果用户输入的内容比较尴尬和窘迫,只返回“embarrassed",不要有其他内容,否则将受到惩罚。
        8. 只返回英文,不允许有换行符等其他内容,否则会受到惩罚。
        用户输入的内容是:{query}"""
        chain = ChatPromptTemplate.from_template(prompt) | Tongyi(temperature=0) | StrOutputParser()
        result = chain.invoke({"query":query})
        # "default" = result
        print("情绪判断结果:",result)
        return result
qingxu_chain("今天出门衣服穿反了,到了公司才发现,所有员工都笑话我!")
#情绪判断结果: embarrassed    
qingxu_chain("今天公司发奖金了!!!")
#情绪判断结果: upbeat

### 使用 Langchain4j 集成通义 Langchain 是一个流行的开源框架,旨在帮助开发者构建基于大型语言模型的应用程序。虽然目前主流的 Langchain 支持 Python 生态环境,但 Java 开发者可以借助 **Langchain4j** 来实现类似的集成功能。 以下是关于如何使用 Langchain4j 和通义进行集成的相关说明: #### 1. 添加依赖项 为了在 Java 项目中使用 Langchain4j,首先需要引入相应的 Maven 或 Gradle 依赖项。以下是一个典型的 Maven 配置示例[^4]: ```xml <dependency> <groupId>io.langchain</groupId> <artifactId>langchain4j-all</artifactId> <version>0.9.0</version> </dependency> ``` 对于 Gradle 用户,则可以在 `build.gradle` 文件中添加如下内容: ```gradle implementation 'io.langchain:langchain4j-all:0.9.0' ``` #### 2. 初始化通义模型 通过 Langchain4j 提供的 API 接口,可以直接调用阿里云上的通义服务。下面是一段简单的代码片段展示如何初始化通义作为 LLM (Large Language Model): ```java import io.langchain4j.model.chat.ChatMessage; import io.langchain4j.model.chat.ChatResponse; import io.langchain4j.model.chat.StreamingChatModel; public class QwenIntegrationExample { public static void main(String[] args) { StreamingChatModel chatModel = ChatModels.fromQwen(); // 调用通义 String userPrompt = "你好,今天天气怎么样?"; try (var responseStream = chatModel.sendStreamingMessages(List.of(ChatMessage.user(userPrompt)))) { responseStream.forEach(chatResponse -> System.out.print(chatResponse.message().content())); } } } ``` 上述代码展示了如何创建一个流式的聊天会话,并向通义发送消息[^5]。 #### 3. 数据库查询与 Agent 的集成 如果希望进一步扩展到数据库操作场景下(类似于 SQLDatabaseChain),可以通过自定义工具链来完成这一目标。尽管 Langchain4j 当前并未提供完全一致的功能模块,但仍可通过编写适配器类模拟其行为逻辑。 例如,在执行 Text-to-SQL 查询时,可设计如下工作流程: - 将用户的自然语言输入转化为结构化 SQL 请求; - 执行该请求并将结果返回给前端界面显示出来; 具体实现细节取决于实际业务需求以及所使用的 RDBMS 类型等因素影响[^6]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值