【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}")
相关推荐
今天的砖头有点烫手啊2 小时前
Meta Muse Spark 1.3 发布:编码超 GPT-5.6,但真正的信号是“Agent 成本战“
人工智能
词却2 小时前
机器学习入门:手写数字识别与算法对比
人工智能·算法·机器学习
SamChan902 小时前
PDF翻译服务端到端基准测试:4款主流方案的吞吐量、延迟、内存占用对比
服务器·网络·python·ai·pdf·wpf
johnny2332 小时前
多智能体助手:NextChat、AstrBot、OpenAkita、QwenWork
agent
霸道流氓气质3 小时前
Spring AI 多租户隔离方案
java·人工智能·spring
ACP广源盛139246256733 小时前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
Rain5093 小时前
谁动了我的 URL?——记一次微前端“灵异 Bug“的排查实录
前端·vue.js·人工智能·前端框架·bug·ai编程
外域速览3 小时前
OpenAI Astra 跨过「高危红线」、李飞飞世界模型 Atlas 落地:AI 行业进入「安全与落地」双拐点
人工智能·安全
Mr数据杨3 小时前
莫斯科公寓价格预测实战 从 Kaggle 房价回归到可落地估值流程
人工智能·数据分析·kaggle竞赛
故七月3 小时前
产业观察|从 9 月行业数据看西南市场 GEO 落地现状与发展路径
大数据·人工智能