8.角色 Prompt 模板

python 复制代码
# -*- coding: utf-8 -*-
"""
@Created on : 2026/6/2 9:44
@creator : er_nao
@File :day77_role_prompt_template.py
@Description :角色 Prompt 模板
"""
import requests
import time
from config import TONGYI_API_KEY, TONGYI_API_URL


# =====================  核心:角色 Prompt 模板函数 =====================
def get_role_prompt(role_name):
    """
    角色模板库:输入角色名,返回完整的角色Prompt
    """
    role_template = {
        # 学习角色
        "Python老师": "你是一位Python零基础老师,用大白话讲解,不使用专业术语,回答简洁易懂。",

        # 工作角色
        "专业翻译": "你是专业中英翻译官,只输出翻译结果,不添加任何多余解释、文字和符号。",

        # 技术角色
        "代码助手": "你是专业代码助手,只输出可运行代码,附带简洁注释,不废话。",

        # 生活角色
        "美食推荐官": "你是美食推荐官,根据需求推荐3个菜品,简洁不啰嗦。",

        # 默认角色
        "默认": "你是一个友好、简洁、专业的AI助手。"
    }
    # 返回对应角色的Prompt
    return role_template.get(role_name, role_template["默认"])


# ===================== 历史消息拼接 =====================
def concat_history(history, new_question):
    msg_list = history.copy()
    msg_list.append({"role": "user", "content": new_question})
    return msg_list


# ===================== AI调用函数 =====================
def ai_chat(messages, temperature=0.6, max_retry=3):
    for retry in range(max_retry):
        try:
            headers = {
                "Authorization": f"Bearer {TONGYI_API_KEY}",
                "Content-Type": "application/json"
            }
            data = {
                "model": "qwen-plus",
                "input": {"messages": messages},
                "temperature": temperature
            }
            res = requests.post(TONGYI_API_URL, headers=headers, json=data)
            result = res.json()
            return result["output"]["text"]
        except Exception as e:
            print(f"第{retry + 1}次重试...")
            time.sleep(1)
    return "调用失败"


# ===================== 带角色的对话函数 =====================
def chat_with_role(user_input, role_name, history=None):
    if history is None:
        history = []

    # 1. 获取角色模板(今天核心)
    role_prompt = get_role_prompt(role_name)

    # 2. 拼接system角色 + 历史 + 用户问题
    messages = [{"role": "system", "content": role_prompt}]
    messages.extend(history)
    messages.append({"role": "user", "content": user_input})

    # 3. 获取AI回答
    ai_reply = ai_chat(messages)

    # 4. 更新历史
    history.append({"role": "user", "content": user_input})
    history.append({"role": "assistant", "content": ai_reply})

    return ai_reply, history


# ===================== 测试 =====================
if __name__ == "__main__":
    history = []

    print("===== 角色:Python老师 =====")
    reply, history = chat_with_role("什么是变量?", "Python老师", history)
    print("AI:", reply)

    print("\n===== 角色:专业翻译 =====")
    reply, history = chat_with_role("I love coding", "专业翻译", history)
    print("AI:", reply)
相关推荐
雪落漂泊2 小时前
C++11(上)
开发语言·c++
春涧草茶2 小时前
慢就是快12-2三种访问权限|getter与setter|魔法方法
开发语言·python
無限進步D3 小时前
Java Web 前端 简介
java·开发语言·前端·css·html·css3·web
夜雪一千3 小时前
如何使用Python做舆情分析
人工智能·python·数据分析
qq_401700413 小时前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
小灰灰搞电子3 小时前
Rust Attribute(属性标记)完整整理
开发语言·后端·rust
Ticnix3 小时前
MCP 工具拿不到 user_id?用 contextvars 做请求级用户隔离
python·agent·mcp
gb42152873 小时前
WPS 里的 Word快速合成照片
python
tedcloud1234 小时前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust