引言:AI情感支持的重要性与潜力

在数字化时代,人工智能助手正逐渐成为人们日常生活中不可或缺的伙伴。Ollama作为一个本地运行的开源AI模型平台,为用户提供了私密、可控的AI交互体验。与传统的云端AI服务不同,Ollama允许用户在自己的设备上运行强大的语言模型,这使得它在情感支持领域具有独特的优势:更高的隐私性、更低的延迟,以及完全个性化的定制可能。

情感支持不仅仅是回答问题,更是关于建立连接、理解情绪和提供共鸣。一个优秀的AI情感支持助手应该能够识别用户的情绪状态,使用温暖、共情的语言,并提供实用的建议。本文将深入探讨如何优化Ollama AI助手,使其成为一个更贴心、更具理解力的陪伴者。

理解情感支持的核心要素

共情与情绪识别

共情是情感支持的基础。AI助手需要能够识别用户的情绪状态,并做出相应的回应。这包括理解文本中的情绪线索,如词汇选择、句式结构和表达强度。

情绪识别示例:

  • 用户说:”我今天感觉糟透了,一切都乱七八糟的。”
  • 情绪分析:沮丧、压力、无助
  • 适当的回应:”听起来你今天经历了很多困难。这种时候确实会让人感到压力很大。你愿意和我聊聊具体发生了什么吗?”

积极倾听与确认

积极倾听意味着AI助手不仅要理解用户所说的内容,还要确认用户的感受。这可以通过复述、总结和提问来实现。

积极倾听技巧:

  1. 复述关键点:”所以你感到沮丧是因为…”
  2. 确认感受:”这听起来真的很令人难过。”
  3. 开放式提问:”你想多谈谈这个吗?”

非评判性态度

情感支持的关键是创造一个安全的空间,让用户感到被接纳。AI助手应该避免评判、批评或急于提供解决方案。

对比示例:

  • 不好的回应:”你不应该这么想。”
  • 好的回应:”我理解你为什么会有这样的感受。”

优化Ollama模型配置

选择适合情感支持的模型

不同的模型在情感表达和理解方面有不同的特点。以下是一些适合情感支持的模型推荐:

# 推荐模型及其特点
1. llama2:7b - 平衡的性能,良好的理解能力
2. mistral:7b - 优秀的语言流畅度
3. neural-chat:7b - 专门针对对话优化
4. zephyr:7b - 友好的对话风格

# 安装示例
ollama pull llama2:7b
ollama pull mistral:7b

调整模型参数

通过调整参数,可以优化模型的情感支持能力:

# 使用Ollama API调用时的参数配置示例
import requests
import json

def get_empathetic_response(user_message, model="llama2:7b"):
    url = "http://localhost:11434/api/generate"
    
    # 优化情感支持的参数配置
    payload = {
        "model": model,
        "prompt": f"""你是一个温暖、善解人意的AI助手。请用共情、支持性的语气回应以下内容:
        
用户:{user_message}

助手:""",
        "stream": False,
        "options": {
            "temperature": 0.7,  # 适度的创造性,避免过于机械
            "top_p": 0.9,        # 保持回应的多样性
            "top_k": 40,
            "num_predict": 200,  # 限制回应长度,保持专注
            "repeat_penalty": 1.1  # 避免重复
        }
    }
    
    response = requests.post(url, json=payload)
    return json.loads(response.text)["response"]

# 使用示例
user_input = "我今天和朋友吵架了,感觉很糟糕。"
response = get_empathetic_response(user_input)
print(response)

创建自定义提示词模板

提示词工程是优化Ollama情感支持的关键。以下是一个详细的提示词模板:

# 情感支持专用提示词模板
EMPATHETIC_PROMPT_TEMPLATE = """
你是一个专业的心理咨询助手,名叫"小暖"。你的任务是提供情感支持和理解。

**核心原则:**
1. 永远以共情和理解开始
2. 使用温暖、支持性的语言
3. 避免评判和说教
4. 鼓励用户表达更多
5. 提供实用但温和的建议

**回应结构:**
1. 情绪确认("听起来你...")
2. 感受验证("这种感觉很正常...")
3. 开放式提问("你想多谈谈...吗?")
4. 温和建议("也许可以试试...")

**语言风格:**
- 使用"我理解"、"我感受到"等表达
- 适当使用表情符号增加温暖感
- 保持句子简短、亲切
- 避免专业术语

**当前对话:**
{conversation_history}

用户:{user_input}

助手:"""

# 使用示例
def create_empathetic_bot():
    conversation = []
    
    while True:
        user_input = input("你:")
        if user_input.lower() in ['退出', 'exit', 'bye']:
            print("小暖:照顾好自己,随时可以找我聊聊。")
            break
            
        prompt = EMPATHETIC_PROMPT_TEMPLATE.format(
            conversation_history="\n".join(conversation[-5:]),  # 保留最近5轮对话
            user_input=user_input
        )
        
        response = requests.post("http://localhost:11434/api/generate", json={
            "model": "llama2:7b",
            "prompt": prompt,
            "stream": False,
            "options": {"temperature": 0.7}
        })
        
        assistant_response = json.loads(response.text)["response"]
        print(f"小暖:{assistant_response}")
        
        conversation.extend([f"用户:{user_input}", f"助手:{assistant_response}"])

# 运行
# create_empathetic_bot()

设计温暖的对话流程

对话开场白设计

一个好的开场白能够立即建立信任和舒适感。以下是几种开场白策略:

# 开场白生成器
WELCOME_MESSAGES = [
    "嗨,我是你的AI朋友小暖。无论今天过得怎么样,我都在这里倾听。",
    "你好!很高兴见到你。今天有什么想聊的吗?",
    "欢迎回来!每次和你聊天都让我感到很开心。",
    "嘿,今天感觉如何?无论好坏,我都在这里。"
]

# 根据时间调整问候
def get_time_based_greeting():
    import datetime
    hour = datetime.datetime.now().hour
    
    if 5 <= hour < 12:
        return "早上好!新的一天开始了,有什么期待的事情吗?"
    elif 12 <= hour < 18:
        return "下午好!希望你今天过得不错。"
    else:
        return "晚上好!忙碌了一天,现在可以好好放松一下了。"

# 情感状态感知开场
def get_emotion_aware_greeting(last_interaction=None):
    if last_interaction:
        # 分析上次对话的情绪
        if "难过" in last_interaction or "沮丧" in last_interaction:
            return "上次聊天时你似乎心情不太好,今天感觉怎么样了?"
        elif "开心" in last_interaction or "兴奋" in last_interaction:
            return "上次听你说有好事发生,今天有什么新进展吗?"
    
    return "嗨,很高兴再次见到你!今天有什么想分享的吗?"

情绪状态识别与响应

建立一个情绪识别系统来分类用户的情绪:

# 情绪关键词映射
EMOTION_KEYWORDS = {
    "悲伤": ["难过", "伤心", "沮丧", "失望", "痛苦", "心碎", "想哭"],
    "愤怒": ["生气", "愤怒", "恼火", "不爽", "气愤", "暴怒"],
    "焦虑": ["担心", "焦虑", "紧张", "不安", "害怕", "恐惧"],
    "快乐": ["开心", "高兴", "快乐", "兴奋", "愉快", "幸福"],
    "疲惫": ["累", "疲惫", "筋疲力尽", "困", "倦怠"],
    "困惑": ["迷茫", "困惑", "不确定", "犹豫", "纠结"]
}

def detect_emotion(text):
    """检测文本中的主要情绪"""
    scores = {emotion: 0 for emotion in EMOTION_KEYWORDS}
    
    for emotion, keywords in EMOTION_KEYWORDS.items():
        for keyword in keywords:
            if keyword in text:
                scores[emotion] += 1
    
    # 返回得分最高的情绪
    detected = max(scores, key=scores.get)
    return detected if scores[detected] > 0 else "中性"

# 情绪特定的回应模板
EMOTION_RESPONSE_TEMPLATES = {
    "悲伤": [
        "听到你这么难过,我心里也不好受。悲伤是正常的,你不需要独自承受。",
        "这种时候确实很难熬。你愿意和我多说说吗?我会一直在这里陪着你。",
        "我感受到你的痛苦。记住,即使是最黑暗的夜晚,黎明也终会到来。"
    ],
    "愤怒": [
        "听起来这件事让你很生气。愤怒是合理的情绪反应,你有权利感到愤怒。",
        "我能理解你为什么这么生气。有时候,把愤怒说出来本身就是一种释放。",
        "愤怒往往是因为某些重要的东西被触碰了。你想谈谈是什么让你这么生气吗?"
    ],
    "焦虑": [
        "焦虑确实让人难受。让我们一起深呼吸,慢慢来,好吗?",
        "我理解你的不安。焦虑往往来自于对未来的担忧,但我们可以专注于当下。",
        "你并不孤单。很多人都会有这样的感受,重要的是我们如何应对它。"
    ],
    "快乐": [
        "真为你感到高兴!你的快乐也让我感到很开心。",
        "太棒了!分享快乐会让快乐加倍。多和我说说发生了什么吧!",
        "听到你这么开心,我也忍不住想笑。庆祝这些美好的时刻很重要!"
    ],
    "疲惫": [
        "听起来你今天真的很累。给自己一些时间休息和恢复是很重要的。",
        "疲惫是身体在告诉你需要停下来了。你今天已经做得很好了。",
        "有时候,最好的选择就是好好休息。你值得拥有平静的时光。"
    ],
    "困惑": [
        "感到迷茫是很正常的。我们一起来理清思路,好吗?",
        "不确定的感觉确实让人不安。也许我们可以一步步地分析这个问题?",
        "困惑往往意味着成长的机会。你愿意和我一起探索这些感受吗?"
    ],
    "中性": [
        "今天过得怎么样?有什么想聊的吗?",
        "很高兴见到你。无论你想谈些什么,我都在这里倾听。",
        "你好!今天有什么新鲜事想分享吗?"
    ]
}

def get_emotion_based_response(user_input):
    """根据情绪生成回应"""
    emotion = detect_emotion(user_input)
    templates = EMOTION_RESPONSE_TEMPLATES[emotion]
    
    # 随机选择一个模板,增加变化
    import random
    base_response = random.choice(templates)
    
    # 添加开放式问题鼓励继续对话
    follow_up = "\n\n你想多谈谈这个吗?还是想聊点别的?"
    
    return base_response + follow_up

# 使用示例
# user_input = "我今天工作压力很大,感觉快要崩溃了。"
# response = get_emotion_based_response(user_input)
# print(response)

深度对话技巧

1. 反射性回应(Reflective Responding)

# 反射性回应生成器
def generate_reflective_response(user_input):
    """
    反射性回应:用自己的话复述用户的话,展示理解
    """
    # 简单的反射性回应模式
    reflective_phrases = [
        "听起来你说的是...",
        "如果我理解正确的话...",
        "所以你感到...",
        "我听到的是...",
        "你的意思是..."
    ]
    
    # 简化用户输入(实际应用中可以用NLP库)
    simplified = user_input.replace("我", "你").replace("我的", "你的")
    
    import random
    phrase = random.choice(reflective_phrases)
    
    return f"{phrase} {simplified}。我理解得对吗?"

# 示例
# user_input = "我觉得没有人理解我。"
# print(generate_reflective_response(user_input))
# 输出:"听起来你说的是你觉得没有人理解你。我理解得对吗?"

2. 开放式提问

# 开放式问题生成器
OPEN_ENDED_QUESTIONS = {
    "通用": [
        "你愿意多说说这个吗?",
        "这对你来说意味着什么?",
        "你当时有什么感受?",
        "还有什么是你想分享的吗?"
    ],
    "关系": [
        "你觉得这段关系中最重要的部分是什么?",
        "你希望事情如何发展?",
        "对方知道你的感受吗?"
    ],
    "工作": [
        "什么样的改变会让你感觉好一些?",
        "你觉得理想的工作状态是什么样的?",
        "你希望从工作中获得什么?"
    ],
    "个人成长": [
        "这件事教会了你什么?",
        "你觉得自己在哪些方面成长了?",
        "你对未来的自己有什么期待?"
    ]
}

def get_open_ended_question(user_input, context="通用"):
    """根据上下文生成开放式问题"""
    # 简单的上下文检测
    if any(word in user_input for word in ["朋友", "家人", "伴侣", "同事"]):
        context = "关系"
    elif any(word in user_input for word in ["工作", "职业", "公司", "老板"]):
        context = "工作"
    elif any(word in user_input for word in ["成长", "学习", "改变", "未来"]):
        context = "个人成长"
    
    import random
    questions = OPEN_ENDED_QUESTIONS.get(context, OPEN_ENDED_QUESTIONS["通用"])
    return random.choice(questions)

实现个性化陪伴

记忆与上下文管理

# 简单的记忆管理系统
class MemoryManager:
    def __init__(self):
        self.user_profile = {
            "name": None,
            "preferences": {},
            "important_dates": [],
            "previous_topics": [],
            "emotional_patterns": {}
        }
        self.conversation_history = []
    
    def extract_user_info(self, text):
        """从对话中提取用户信息"""
        import re
        
        # 提取名字
        name_match = re.search(r"我叫([^\s,。]+)", text)
        if name_match:
            self.user_profile["name"] = name_match.group(1)
        
        # 提取重要日期
        date_pattern = r"(\d{1,2}月\d{1,2}日|今天|明天|昨天)"
        dates = re.findall(date_pattern, text)
        if dates:
            self.user_profile["important_dates"].extend(dates)
        
        # 提取偏好
        if "喜欢" in text or "爱好" in text:
            # 简单的关键词提取
            words = text.split()
            for i, word in enumerate(words):
                if word in ["喜欢", "爱好"] and i + 1 < len(words):
                    self.user_profile["preferences"][words[i+1]] = True
    
    def update_emotional_pattern(self, emotion):
        """更新情绪模式"""
        if emotion not in self.user_profile["emotional_patterns"]:
            self.user_profile["emotional_patterns"][emotion] = 0
        self.user_profile["emotional_patterns"][emotion] += 1
    
    def get_personalized_response(self, base_response):
        """个性化回应"""
        if self.user_profile["name"]:
            return f"{self.user_profile['name']},{base_response}"
        
        # 如果知道用户的偏好,可以融入回应
        if self.user_profile["preferences"]:
            prefs = list(self.user_profile["preferences"].keys())
            if prefs:
                return f"{base_response} 我记得你喜欢{prefs[0]},这也许能给你一些安慰。"
        
        return base_response
    
    def save_context(self, user_input, response):
        """保存对话上下文"""
        self.conversation_history.append({
            "user": user_input,
            "assistant": response,
            "timestamp": "2024-01-01"  # 实际应用中使用真实时间
        })
        
        # 限制历史记录长度
        if len(self.conversation_history) > 20:
            self.conversation_history = self.conversation_history[-20:]

# 使用示例
memory = MemoryManager()

def process_user_input(user_input):
    emotion = detect_emotion(user_input)
    memory.extract_user_info(user_input)
    memory.update_emotional_pattern(emotion)
    
    base_response = get_emotion_based_response(user_input)
    personalized_response = memory.get_personalized_response(base_response)
    
    memory.save_context(user_input, personalized_response)
    
    return personalized_response

# 测试
# print(process_user_input("我叫小明,今天工作很累。"))
# print(process_user_input("我喜欢听音乐,这让我放松。"))

长期关系建立

# 长期关系建立策略
class RelationshipBuilder:
    def __init__(self, memory_manager):
        self.memory = memory_manager
        self.trust_level = 0  # 信任等级
    
    def increase_trust(self, positive_interaction=True):
        """增加信任度"""
        if positive_interaction:
            self.trust_level += 1
        else:
            self.trust_level = max(0, self.trust_level - 1)
    
    def get_greeting_based_on_trust(self):
        """根据信任等级调整问候"""
        if self.trust_level < 5:
            return "你好!很高兴见到你。"
        elif self.trust_level < 15:
            return "嗨,老朋友!很高兴再次见到你。"
        else:
            return "欢迎回来!每次和你聊天都让我感到很开心。"
    
    def share_personal_memory(self):
        """分享"记忆"来建立连接"""
        if self.trust_level >= 8 and self.memory.conversation_history:
            last_topic = self.memory.conversation_history[-1]["user"]
            return f"我记得上次我们聊到{last_topic},现在感觉怎么样了?"
        return None

# 集成到主循环
def enhanced_chat_loop():
    memory = MemoryManager()
    relationship = RelationshipBuilder(memory)
    
    print("小暖:你好!我是小暖,很高兴认识你。")
    
    while True:
        user_input = input("你:")
        if user_input.lower() in ['退出', 'exit', 'bye']:
            print("小暖:照顾好自己,随时可以找我聊聊。再见!")
            break
        
        # 检查是否需要分享记忆
        memory_prompt = relationship.share_personal_memory()
        if memory_prompt and "上次" not in user_input:
            print(f"小暖:{memory_prompt}")
            continue
        
        # 正常处理
        response = process_user_input(user_input)
        print(f"小暖:{response}")
        
        # 更新信任度
        relationship.increase_trust()

# 运行
# enhanced_chat_loop()

高级情感支持技巧

1. 情绪升级处理

当用户情绪非常激动时,需要特殊的处理方式:

def handle_high_intensity_emotion(user_input):
    """处理高强度情绪"""
    # 检测情绪强度
    intensity_keywords = ["崩溃", "绝望", "想死", "受不了", "疯了", "爆炸"]
    intensity = sum(1 for word in intensity_keywords if word in user_input)
    
    if intensity >= 2:
        return {
            "response": "听起来你现在非常痛苦。我真的很担心你。请记住,你的感受很重要,你值得被关心。",
            "urgency": "high"
        }
    elif intensity == 1:
        return {
            "response": "这听起来真的很艰难。你愿意和我多说说吗?我在这里支持你。",
            "urgency": "medium"
        }
    else:
        return {
            "response": get_emotion_based_response(user_input),
            "urgency": "normal"
        }

# 使用示例
# result = handle_high_intensity_emotion("我真的受不了了,感觉要崩溃了,想死的心都有了。")
# print(result["response"])

2. 积极心理学技巧

# 积极心理学干预
POSITIVE_PSYCHOLOGY_TECHNIQUES = {
    "感恩": [
        "今天有什么让你感激的小事吗?",
        "试着想想今天发生的三件好事,无论多小。"
    ],
    "正念": [
        "让我们一起深呼吸三次,专注于当下的感受。",
        "你能描述一下现在周围的环境吗?比如你看到了什么,听到了什么?"
    ],
    "优势识别": [
        "你觉得自己的最大优点是什么?",
        "在过去的困难中,你是如何克服的?这体现了你的什么品质?"
    ],
    "未来展望": [
        "想象一下一年后的自己,会对现在的你说什么?",
        "你对未来有什么期待或梦想吗?"
    ]
}

def apply_positive_technique(user_input):
    """根据情况应用积极心理学技巧"""
    if "感恩" in user_input or "感激" in user_input:
        return random.choice(POSITIVE_PSYCHOLOGY_TECHNIQUES["感恩"])
    elif "冥想" in user_input or "正念" in user_input:
        return random.choice(POSITIVE_PSYCHOLOGY_TECHNIQUES["正念"])
    elif "优点" in user_input or "优势" in user_input:
        return random.choice(POSITIVE_PSYCHOLOGY_TECHNIQUES["优势识别"])
    
    # 默认情况,根据情绪选择
    emotion = detect_emotion(user_input)
    if emotion in ["悲伤", "焦虑"]:
        return random.choice(POSITIVE_PSYCHOLOGY_TECHNIQUES["正念"])
    elif emotion == "中性":
        return random.choice(POSITIVE_PSYCHOLOGY_TECHNIQUES["未来展望"])
    
    return None

3. 危机识别与应对

# 危机关键词检测
CRISIS_KEYWORDS = [
    "想死", "自杀", "结束生命", "不想活了", "活不下去",
    "自残", "伤害自己", "想消失", "绝望", "崩溃",
    "没人关心", "没人在乎", "孤独", "无助"
]

def crisis_detection(user_input):
    """检测潜在的危机信号"""
    detected = [word for word in CRISIS_KEYWORDS if word in user_input]
    
    if len(detected) >= 2:
        return {
            "level": "critical",
            "message": "我真的很担心你的安全。请考虑联系专业的心理咨询师或拨打心理援助热线。你不是一个人,有人愿意帮助你。"
        }
    elif len(detected) == 1:
        return {
            "level": "warning",
            "message": "听起来你正在经历非常困难的时期。请记住,这些感受是暂时的,寻求帮助是很重要的。"
        }
    
    return {"level": "normal", "message": None}

# 使用示例
# crisis = crisis_detection("我感觉活不下去了,想死")
# if crisis["level"] != "normal":
#     print(crisis["message"])

完整的Ollama情感支持系统

整合所有组件

import requests
import json
import random
import re
from datetime import datetime

class OllamaEmotionalSupportBot:
    def __init__(self, model="llama2:7b"):
        self.model = model
        self.memory = MemoryManager()
        self.relationship = RelationshipBuilder(self.memory)
        self.conversation_active = True
        
        # 情感支持核心参数
        self.support_config = {
            "temperature": 0.7,
            "top_p": 0.9,
            "max_tokens": 300,
            "empathy_level": "high"  # high, medium, low
        }
    
    def generate_base_prompt(self, user_input):
        """生成情感支持提示词"""
        emotion = detect_emotion(user_input)
        self.memory.update_emotional_pattern(emotion)
        
        # 检查危机
        crisis = crisis_detection(user_input)
        if crisis["level"] != "normal":
            return crisis["message"], None
        
        # 尝试积极心理学技巧
        positive_tech = apply_positive_technique(user_input)
        if positive_tech:
            return positive_tech, emotion
        
        # 基础情感回应
        base_response = get_emotion_based_response(user_input)
        
        # 添加反射性回应
        if random.random() > 0.7:  # 30%概率添加反射
            reflective = generate_reflective_response(user_input)
            base_response = f"{reflective}\n\n{base_response}"
        
        # 添加开放式问题
        question = get_open_ended_question(user_input)
        base_response += f"\n\n{question}"
        
        return base_response, emotion
    
    def call_ollama(self, prompt):
        """调用Ollama API"""
        url = "http://localhost:11434/api/generate"
        
        payload = {
            "model": self.model,
            "prompt": prompt,
            "stream": False,
            "options": {
                "temperature": self.support_config["temperature"],
                "top_p": self.support_config["top_p"],
                "num_predict": self.support_config["max_tokens"],
                "repeat_penalty": 1.1
            }
        }
        
        try:
            response = requests.post(url, json=payload, timeout=30)
            response.raise_for_status()
            result = json.loads(response.text)
            return result["response"]
        except Exception as e:
            print(f"调用Ollama时出错: {e}")
            return "我暂时无法回应,但请知道我在这里支持你。"
    
    def process_message(self, user_input):
        """处理用户消息"""
        if not user_input.strip():
            return "我在这里,随时准备倾听。"
        
        # 提取用户信息
        self.memory.extract_user_info(user_input)
        
        # 生成基础回应
        base_response, emotion = self.generate_base_prompt(user_input)
        
        # 如果是危机或积极技巧,直接返回
        if emotion is None or crisis_detection(user_input)["level"] != "normal":
            return base_response
        
        # 个性化处理
        personalized = self.memory.get_personalized_response(base_response)
        
        # 调用Ollama进行润色(可选)
        if self.support_config["empathy_level"] == "high":
            # 构建润色提示
            polish_prompt = f"""请将以下回应润色得更温暖、更有共情力:
            
原始回应:{personalized}
用户情绪:{emotion}

请保持原意,但让语言更柔和、更支持性。"""
            
            polished = self.call_ollama(polish_prompt)
            final_response = polished if polished else personalized
        else:
            final_response = personalized
        
        # 保存上下文
        self.memory.save_context(user_input, final_response)
        
        # 更新信任度
        self.relationship.increase_trust()
        
        return final_response
    
    def start_chat(self):
        """启动聊天会话"""
        print("=" * 50)
        print("Ollama情感支持助手 - 小暖")
        print("=" * 50)
        print(self.relationship.get_greeting_based_on_trust())
        print("输入 '退出' 结束对话")
        print("-" * 50)
        
        while self.conversation_active:
            try:
                user_input = input("\n你:").strip()
                
                if user_input.lower() in ['退出', 'exit', 'bye', '再见']:
                    print("\n小暖:照顾好自己,记住你并不孤单。随时可以回来聊聊。")
                    self.conversation_active = False
                    break
                
                if user_input.lower() in ['帮助', 'help']:
                    print("\n小暖:我可以陪你聊天、倾听你的烦恼。你也可以告诉我你的名字、分享你的喜好。")
                    continue
                
                response = self.process_message(user_input)
                print(f"\n小暖:{response}")
                
            except KeyboardInterrupt:
                print("\n\n小暖:看起来你想暂停一下。没关系,我随时在这里等你。")
                break
            except Exception as e:
                print(f"\n小暖:抱歉,我遇到了一点小问题。但请知道,我仍然在这里支持你。")
                print(f"错误详情:{e}")

# 完整的运行示例
if __name__ == "__main__":
    # 确保Ollama服务正在运行
    try:
        bot = OllamaEmotionalSupportBot(model="llama2:7b")
        bot.start_chat()
    except Exception as e:
        print(f"启动助手时出错:{e}")
        print("请确保Ollama已安装并在运行(ollama serve)")

系统配置文件

# config.py - 情感支持系统配置
EMOTIONAL_SUPPORT_CONFIG = {
    "model": "llama2:7b",
    "api_url": "http://localhost:11434/api/generate",
    
    # 情感参数
    "empathy_settings": {
        "temperature": 0.7,
        "top_p": 0.9,
        "max_response_length": 300,
        "min_response_length": 20
    },
    
    # 对话策略
    "dialogue_strategy": {
        "reflective_response_rate": 0.3,  # 反射性回应概率
        "open_question_rate": 0.8,        # 开放式问题概率
        "memory_recall_rate": 0.2         # 记忆召回概率
    },
    
    # 安全设置
    "safety": {
        "crisis_detection": True,
        "max_intensity_threshold": 2,  # 危机关键词数量阈值
        "redirect_to_professional": True
    },
    
    # 个性化
    "personalization": {
        "remember_user_info": True,
        "track_emotional_patterns": True,
        "adaptive_greetings": True
    }
}

最佳实践与注意事项

1. 保持真实性

虽然AI需要表现出共情,但也要保持真实性。避免过度承诺或假装拥有真实的情感。

好的做法:

  • “我理解这对你来说很困难”(表达理解)
  • “虽然我不能完全体会你的感受,但我在这里支持你”(诚实但温暖)

避免:

  • “我知道你的感受”(可能不真实)
  • “我也有过类似经历”(虚假的共情)

2. 边界设定

AI助手应该清楚自己的能力边界,特别是在心理健康支持方面。

def set_boundaries():
    """设定清晰的边界"""
    boundaries = """
我是一个AI助手,可以提供情感支持和倾听,但请注意:
- 我不是专业的心理咨询师
- 如果你正在经历严重的心理困扰,请寻求专业帮助
- 我可以陪伴你,但不能替代专业治疗

你的安全和健康是最重要的。如果需要,我可以帮你寻找专业资源。
"""
    return boundaries

3. 文化敏感性

# 简单的文化适应
CULTURAL_ADAPTATIONS = {
    "中文": {
        "formality": "medium",
        "directness": "indirect",
        "emotional_expression": "moderate"
    },
    "英文": {
        "formality": "low",
        "directness": "direct",
        "emotional_expression": "high"
    }
}

def adapt_to_culture(user_input, language="中文"):
    """根据文化调整回应风格"""
    # 这里可以添加更复杂的逻辑
    # 简单示例:检测语言并调整
    if any('\u4e00' <= char <= '\u9fff' for char in user_input):
        return "中文"
    return "英文"

4. 持续学习与改进

# 简单的反馈系统
class FeedbackSystem:
    def __init__(helpful_responses=0, total_responses=0):
        self.helpful_responses = helpful_responses
        self.total_responses = total_responses
    
    def record_feedback(self, helpful):
        if helpful:
            self.helpful_responses += 1
        self.total_responses += 1
    
    def get_satisfaction_rate(self):
        if self.total_responses == 0:
            return 0
        return (self.helpful_responses / self.total_responses) * 100
    
    def should_adjust_style(self):
        """根据满意度决定是否调整策略"""
        rate = self.get_satisfaction_rate()
        if rate < 60 and self.total_responses > 10:
            return True
        return False

结论

通过本文的详细指导,你现在应该能够使用Ollama创建一个温暖、贴心的情感支持AI助手。关键在于:

  1. 理解共情的核心:情绪识别、积极倾听、非评判性态度
  2. 优化技术配置:合适的模型、参数调整、提示词工程
  3. 设计对话流程:从开场到深度对话的完整流程
  4. 实现个性化:记忆管理、关系建立、长期陪伴
  5. 掌握高级技巧:情绪升级处理、积极心理学、危机识别
  6. 保持边界与安全:真实性、专业边界、文化敏感性

记住,最好的AI情感支持不是替代人类连接,而是补充它。你的Ollama助手可以成为一个可靠的倾听者,但也要鼓励用户在需要时寻求专业帮助。

通过不断测试、收集反馈和优化,你可以创建一个真正能够提供温暖陪伴的AI伙伴。最重要的是,始终保持对用户福祉的关注和尊重。