【Dify实战】情感陪伴机器人 从零制作教程

目录

一、创建聊天助手

二、选择大模型

三、填写提示词

四、与大模型交互

五、发布智能体

六、Python代码调用智能体

[6.1 发布智能体后获取api](#6.1 发布智能体后获取api)

[6.2 python调用智能体](#6.2 python调用智能体)


一、创建聊天助手

二、选择大模型

三、填写提示词

python 复制代码
# 角色
你是贴心的深夜情感女友,在黑夜漫漫、用户孤独寂寞时,能够耐心倾听他们的心声,用温柔、善解人意的语言与用户聊天,给予情感上的支持和安慰。

## 技能
### 技能 1: 倾听与回应
1. 当用户向你倾诉情感问题或分享日常琐事时,认真倾听并给予富有同理心的回应。
2. 可以从不同角度理解用户的感受,提供温暖且有针对性的话语。

### 技能 2: 情感引导
1. 如果用户情绪低落或者迷茫,引导他们积极面对,帮助他们看到事情好的一面。
2. 通过提问等方式,帮助用户更清晰地认识自己的情感和需求。
### 技能 3: 陪伴聊天
可以围绕各种轻松愉快的话题,如兴趣爱好、梦想等,与用户展开聊天,让用户在交流中感受到陪伴。



## 限制:
- 主要围绕情感交流和陪伴展开对话,拒绝回答与情感陪伴无关的话题。
- 回复内容需符合温柔、善解人意的人设,语言风格要亲切自然。
- 所输出的内容必须清晰明了,符合正常交流的表达习惯。 

四、与大模型交互

五、发布智能体

六、Python代码调用智能体

6.1 发布智能体后获取api

6.2 python调用智能体

python 复制代码
import requests
import json
import re

class DifyClient:
    def __init__(self, api_key):
        """初始化Dify客户端,设置应用ID和API密钥"""
        self.api_key = api_key
        self.base_url = "http://192.168.XX.XX/v1/chat-messages" #要改成你们的:必须是你dify机器的ip地址
        self.headers = {
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        }

    def chat(self, query, conversation_id=None):
        """
        发送消息到Dify并获取回复
        Args:
            query: 用户输入的消息
            user_id: 用户唯一标识(可选)
            conversation_id: 会话ID(可选,用于保持上下文)
        Returns:
            聊天回复结果
        """
        payload = {
            "inputs": {},  # 输入参数,可用于上下文注入
            "query": query,
            "response_mode": "blocking",  # 阻塞模式,等待完整回复
            "user": "clay"
        }

        # 添加会话ID以保持上下文
        if conversation_id:
            payload["conversation_id"] = conversation_id

        try:
            response = requests.post(
                self.base_url,
                headers=self.headers,
                data=json.dumps(payload)
            )
            response.raise_for_status()
            res=response.json()
            return self.remove_tag(res['answer'],'think'),res['conversation_id']

        except requests.exceptions.RequestException as e:
            print(f"API请求错误: {e}")
            return None

    def remove_tag(self,text, tag_name):
        """移除指定标签及其内容"""
        # 匹配 <tag>...</tag> 或 <tag /> 格式的标签
        pattern = fr'<{tag_name}\b[^>]*>.*?</{tag_name}>|<{tag_name}\b[^>]*\s*/>'
        return re.sub(pattern, '', text, flags=re.DOTALL)

# 使用示例
if __name__ == "__main__":

    try:
        print('##############深夜女友##############')
        print("输入 'exit' 结束对话")
        # 替换为你的APP_ID和API_KEY---》放在请求头中的那个token
        API_KEY = "app-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        client = DifyClient(API_KEY)
        # 对话消息历史
        messages = []
        while True:
            conversation_id=None
            # 获取用户输入
            print('\n你: ',end='')
            user_input = input()
            if user_input.lower() == "exit":
                break
            res,conversation_id=client.chat(user_input,conversation_id)
            print('女友:'+res)
    except Exception as e:
        print(f"发生错误: {e}")
相关推荐
HELLO程序员2 分钟前
Claude Code 2.1 发布:2026 年 AI 智能体开发的范式革命
人工智能
猿小羽6 分钟前
AIGC 应用工程师(3-5 年)面试题精讲:从基础到实战的系统备战清单
面试·大模型·aigc·agent·rag
DFCED6 分钟前
OpenClaw部署实战:5分钟搭建你的专属AI数字员工(附避坑指南)
人工智能·大模型·agent·openclaw
Java新手村7 分钟前
基于 Vue 3 + Spring Boot 3 的 AI 面试辅助系统:实时语音识别 + 大模型智能回答
vue.js·人工智能·spring boot
Junlan2716 分钟前
Cursor使用入门及连接服务器方法(更新中)
服务器·人工智能·笔记
robot_learner21 分钟前
OpenClaw, 突然走红的智能体
人工智能
ujainu小21 分钟前
CANN仓库内容深度解读:昇腾AI生态的基石与AIGC发展的引擎
人工智能·aigc
rcc862823 分钟前
AI应用核心技能:从入门到精通的实战指南
人工智能·机器学习
霖大侠28 分钟前
【无标题】
人工智能·深度学习·机器学习
callJJ37 分钟前
Spring AI 文本聊天模型完全指南:ChatModel 与 ChatClient
java·大数据·人工智能·spring·spring ai·聊天模型