import os from modelscope_studio.components.pro.chatbot import ChatbotActionConfig, ChatbotBotConfig, ChatbotUserConfig, ChatbotWelcomeConfig # Env is_cn = os.getenv('MODELSCOPE_ENVIRONMENT') == 'studio' api_key = os.getenv('API_KEY') def get_text(text: str, cn_text: str): if is_cn: return cn_text return text # Save history in browser save_history = True # Chatbot Config def user_config(disabled_actions=None): return ChatbotUserConfig( class_names=dict(content="user-message-content"), actions=[ "copy", "edit", ChatbotActionConfig( action="delete", popconfirm=dict(title=get_text("Delete the message", "删除消息"), description=get_text( "Are you sure to delete this message?", "确认删除该消息?"), okButtonProps=dict(danger=True))) ], disabled_actions=disabled_actions) def bot_config(disabled_actions=None): return ChatbotBotConfig(actions=[ "copy", "edit", ChatbotActionConfig( action="retry", popconfirm=dict( title=get_text("Regenerate the message", "重新生成消息"), description=get_text( "Regenerate the message will also delete all subsequent messages.", "重新生成消息会删除所有后续消息。"), okButtonProps=dict(danger=True))), ChatbotActionConfig(action="delete", popconfirm=dict( title=get_text("Delete the message", "删除消息"), description=get_text( "Are you sure to delete this message?", "确认删除该消息?"), okButtonProps=dict(danger=True))) ], avatar="./assets/qwen.png", disabled_actions=disabled_actions) def welcome_config(): return ChatbotWelcomeConfig( variant="borderless", icon="./assets/qwen.png", title=get_text("Hello, I'm Qwen3", "你好,我是 Qwen3"), description=get_text("Select a model and enter text to get started.", "选择模型并输入文本,开始对话吧。"), prompts=dict( title=get_text("How can I help you today?", "有什么我能帮助你的吗?"), styles={ "list": { "width": '100%', }, "item": { "flex": 1, }, }, items=[{ "label": get_text("📅 Make a plan", "📅 制定计划"), "children": [{ "description": get_text("Help me with a plan to start a business", "帮助我制定一个创业计划") }, { "description": get_text("Help me with a plan to achieve my goals", "帮助我制定一个实现目标的计划") }, { "description": get_text("Help me with a plan for a successful interview", "帮助我制定一个成功的面试计划") }] }, { "label": get_text("🖋 Help me write", "🖋 帮我写"), "children": [{ "description": get_text("Help me write a story with a twist ending", "帮助我写一个带有意外结局的故事") }, { "description": get_text("Help me write a blog post on mental health", "帮助我写一篇关于心理健康的博客文章") }, { "description": get_text("Help me write a letter to my future self", "帮助我写一封给未来自己的信") }] }]), ) DEFAULT_SUGGESTIONS = [{ "label": get_text('Make a plan', '制定计划'), "value": get_text('Make a plan', '制定计划'), "children": [{ "label": get_text("Start a business", "开始创业"), "value": get_text("Help me with a plan to start a business", "帮助我制定一个创业计划") }, { "label": get_text("Achieve my goals", "实现我的目标"), "value": get_text("Help me with a plan to achieve my goals", "帮助我制定一个实现目标的计划") }, { "label": get_text("Successful interview", "成功的面试"), "value": get_text("Help me with a plan for a successful interview", "帮助我制定一个成功的面试计划") }] }, { "label": get_text('Help me write', '帮我写'), "value": get_text("Help me write", '帮我写'), "children": [{ "label": get_text("Story with a twist ending", "带有意外结局的故事"), "value": get_text("Help me write a story with a twist ending", "帮助我写一个带有意外结局的故事") }, { "label": get_text("Blog post on mental health", "关于心理健康的博客文章"), "value": get_text("Help me write a blog post on mental health", "帮助我写一篇关于心理健康的博客文章") }, { "label": get_text("Letter to my future self", "给未来自己的信"), "value": get_text("Help me write a letter to my future self", "帮助我写一封给未来自己的信") }] }] DEFAULT_SYS_PROMPT = "You are a helpful and harmless assistant." MIN_THINKING_BUDGET = 1 MAX_THINKING_BUDGET = 38 DEFAULT_THINKING_BUDGET = 38 DEFAULT_MODEL = "qwen3-235b-a22b" MODEL_OPTIONS = [ { "label": get_text("Qwen3-235B-A22B", "通义千问3-235B-A22B"), "modelId": "Qwen/Qwen3-235B-A22B", "value": "qwen3-235b-a22b" }, { "label": get_text("Qwen3-32B", "通义千问3-32B"), "modelId": "Qwen/Qwen3-32B", "value": "qwen3-32b" }, { "label": get_text("Qwen3-30B-A3B", "通义千问3-30B-A3B"), "modelId": "Qwen/Qwen3-30B-A3B", "value": "qwen3-30b-a3b" }, { "label": get_text("Qwen3-14B", "通义千问3-14B"), "modelId": "Qwen/Qwen3-14B", "value": "qwen3-14b" }, { "label": get_text("Qwen3-8B", "通义千问3-8B"), "modelId": "Qwen/Qwen3-8B", "value": "qwen3-8b" }, { "label": get_text("Qwen3-4B", "通义千问3-4B"), "modelId": "Qwen/Qwen3-4B", "value": "qwen3-4b" }, { "label": get_text("Qwen3-1.7B", "通义千问3-1.7B"), "modelId": "Qwen/Qwen3-1.7B", "value": "qwen3-1.7b" }, { "label": get_text("Qwen3-0.6B", "通义千问3-0.6B"), "modelId": "Qwen/Qwen3-0.6B", "value": "qwen3-0.6b" }, ] for model in MODEL_OPTIONS: model[ "link"] = is_cn and f"https://modelscope.cn/models/{model['modelId']}" or f"https://huggingface.co./{model['modelId']}" MODEL_OPTIONS_MAP = {model["value"]: model for model in MODEL_OPTIONS} DEFAULT_LOCALE = 'zh_CN' if is_cn else 'en_US' DEFAULT_THEME = { "token": { "colorPrimary": "#6A57FF", } } DEFAULT_SETTINGS = { "model": DEFAULT_MODEL, "sys_prompt": DEFAULT_SYS_PROMPT, "thinking_budget": DEFAULT_THINKING_BUDGET }