【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}")
相关推荐
2501_941333102 小时前
【计算机视觉系列】:钢结构构件识别与定位_yolo11-seg-RVB改进
人工智能·计算机视觉
belldeep2 小时前
比较 RPA 与 AI Agent 的异同,两者有何关系?
人工智能·ai·agent·rpa
智能化咨询2 小时前
(80页PPT)毕XX集团管理咨询项目项目总结汇报(附下载方式)
大数据·人工智能
Pyeako2 小时前
深度学习--PyTorch框架&优化器&激活函数
人工智能·pytorch·python·深度学习·优化器·激活函数·梯度爆炸与消失
sww_10262 小时前
智能问数系统(三):生成数据报告
人工智能·html5
夜勤月2 小时前
数据中台的最后一块拼图:利用 MCP 统一企业所有异构数据源,打造 AI 原生数据底座
人工智能
永霖光电_UVLED2 小时前
Enphase 开启首台基于氮化镓(GaN)微逆变器的量产
人工智能·神经网络·生成对抗网络
The Open Group2 小时前
AI 时代的架构挑战:用标准化方法驾驭智能化复杂性
大数据·人工智能·架构
忆~遂愿2 小时前
告别听歌枷锁 R3PLAY + cpolar 实现真正的听歌自由
人工智能