【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}")
相关推荐
前进的李工20 小时前
LangChain使用之Model IO(提示词模版之ChatPromptTemplate)
java·前端·人工智能·python·langchain·大模型
AIArchivist20 小时前
深度解析|超级AI医院:不止是概念,更是医疗未来的确定性方向
人工智能·健康医疗
华农DrLai20 小时前
什么是角色扮演Prompt?为什么给AI设定身份能提升表现?
人工智能·深度学习·ai·prompt·bert·transformer
大傻^20 小时前
SpringAI2.0 向量存储生态:Redis、Amazon S3 与 Bedrock Knowledge Base 集成
数据库·人工智能·向量存储·springai
咋个办呢20 小时前
AI智能体自学打卡:一份非常全的 Markdown Prompt 模板(可做减法)
人工智能·ai·prompt·智能体
彷徨的蜗牛20 小时前
智能AI自动化协同发文系统架构设计:从理论到实践的完整指南
人工智能·系统架构·自动化
许国栋_20 小时前
B2B企业如何建设价值管理办公室(VMO)?实践与落地解析
人工智能·安全·云计算·产品经理
一RTOS一20 小时前
从PLC到机器人:实时操作系统如何决定能力上限
人工智能·机器人·鸿道操作系统·鸿道实时操作系统·国产嵌入式操作系统选型·鸿道机器人操作系统
疯狂的咸鸭蛋20 小时前
Dify插件Database配置时链接失败问题解决
dify
bennybi20 小时前
Openclaw 实践笔记
笔记·ai·openclaw