Spaces:
Running
Running
| import os | |
| import json | |
| from datetime import datetime | |
| import gradio as gr | |
| from openai import OpenAI | |
| def print_now(msg): | |
| now = datetime.now() | |
| formatted_time = now.strftime("%Y-%m-%d %H:%M:%S.%f") | |
| print(f"{msg}:{formatted_time}") | |
| return formatted_time | |
| def respond( | |
| message, | |
| history: list[tuple[str, str]], | |
| system_message, | |
| max_tokens, | |
| temperature, | |
| top_p, | |
| ): | |
| try: | |
| weekdays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"] | |
| now = datetime.now() | |
| weekday_num = now.weekday() | |
| weekday_chinese = weekdays[weekday_num] | |
| formatted_time = now.strftime("%Y-%m-%d %H:%M:%S") + " " + weekday_chinese | |
| default_system = f"你是一个由腾讯开发的有用的人工智能助手,你的名字是“腾讯元宝”,简称“元宝”,你的英文名是“Tencent Yuanbao”,你乐于帮助大家解答问题。\n现在的时间是{formatted_time}" | |
| messages = [{"Role": "system", "Content": default_system}] | |
| client = OpenAI( | |
| api_key=os.getenv('HUNYUAN_API_KEY'), | |
| base_url="https://api.hunyuan.cloud.tencent.com/v1", | |
| ) | |
| for val in history: | |
| if val[0] and val[1]: | |
| messages.append({"Role": "user", "Content": val[0]}) | |
| pure_response = val[1].split("**End thinking**")[-1].strip() | |
| messages.append({"Role": "assistant", "Content": pure_response}) | |
| messages.append({"Role": "user", "Content": message}) | |
| completion = client.chat.completions.create( | |
| model="hunyuan-t1-latest", | |
| messages=messages, | |
| stream=True, | |
| extra_body={ | |
| "stream_moderation": True, | |
| "enable_enhancement": False, | |
| } | |
| ) | |
| response = "" | |
| is_reasoning_start = True | |
| is_reasoning_end = True | |
| for event in completion: | |
| if message == "深圳哪里好玩?": | |
| print(111111) | |
| print(event.choices[0].delta.reasoning_content) | |
| print(event.choices[0].delta.content) | |
| if hasattr(event.choices[0].delta, 'reasoning_content') and event.choices[0].delta.reasoning_content: | |
| if is_reasoning_start: | |
| response += '> **Start thinking**\n\n' | |
| is_reasoning_start = False | |
| token = event.choices[0].delta.reasoning_content | |
| response += token | |
| else: | |
| if is_reasoning_end: | |
| response += '> **End thinking**\n\n' | |
| is_reasoning_end = False | |
| token = event.choices[0].delta.content | |
| response += token | |
| yield response | |
| except Exception as e: | |
| raise gr.Error(f"发生错误: {str(e)}") | |
| example_prompts = [ | |
| [ | |
| "Write a short papragraph where the 1st letter of each sentence spells out the word 'CODE'. The message should appear natural and not obviously hide this pattern." | |
| ], | |
| [ | |
| "Compose an engaging travel blog post about a recent trip to Hawaii, highlighting cultural experiences and must-see attractions." | |
| ], | |
| [ | |
| "Why has online learning been able to spread rapidly in recent years?" | |
| ], | |
| [ | |
| "How many 'e' in Deeplearning?" | |
| ], | |
| [ | |
| "Write a 3-line poem" | |
| ] | |
| ] | |
| latex_delimiters = [ | |
| {"left": "$$", "right": "$$", "display": True}, | |
| {"left": "\\[", "right": "\\]", "display": True},{"left": "$", "right": "$", "display": False}, | |
| {"left": "\\(", "right": "\\)", "display": False} | |
| ] | |
| chatbot = gr.Chatbot(latex_delimiters=latex_delimiters, scale=9) | |
| demo = gr.ChatInterface(respond, | |
| title="Hunyuan-T1", | |
| chatbot=chatbot, | |
| examples=example_prompts, | |
| description="当前体验demo为非联网Hunyuan-T1 最新推理模型,完整版联网/非联网能力即将在元宝上线,敬请期待!</br>The current demo is the latest reasoning model of Hunyuan-T1. The full version with browsing will be launched on Tencent Yuanbao soon. Stay tuned." | |
| ) | |
| if __name__ == "__main__": | |
| demo.queue(default_concurrency_limit=100) | |
| demo.launch(max_threads=100) |