import os import time from textwrap import dedent import gradio as gr import mdtex2html import torch from loguru import logger from transformers import AutoModel, AutoTokenizer # fix timezone in Linux os.environ["TZ"] = "Asia/Shanghai" try: time.tzset() # type: ignore # pylint: disable=no-member except Exception: # Windows logger.warning("Windows, cant run time.tzset()") model_name = "fb700/chatglm-fitness-RLHF" RETRY_FLAG = False tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) #model = AutoModel.from_pretrained(model_name, trust_remote_code=True).quantize(4).half().cuda() model = AutoModel.from_pretrained(model_name, trust_remote_code=True).half().cuda() model = model.eval() _ = """Override Chatbot.postprocess""" def postprocess(self, y): if y is None: return [] for i, (message, response) in enumerate(y): y[i] = ( None if message is None else mdtex2html.convert((message)), None if response is None else mdtex2html.convert(response), ) return y gr.Chatbot.postprocess = postprocess def parse_text(text): lines = text.split("\n") lines = [line for line in lines if line != ""] count = 0 for i, line in enumerate(lines): if "```" in line: count += 1 items = line.split("`") if count % 2 == 1: lines[i] = f'
'
            else:
                lines[i] = "
" else: if i > 0: if count % 2 == 1: line = line.replace("`", r"\`") line = line.replace("<", "<") line = line.replace(">", ">") line = line.replace(" ", " ") line = line.replace("*", "*") line = line.replace("_", "_") line = line.replace("-", "-") line = line.replace(".", ".") line = line.replace("!", "!") line = line.replace("(", "(") line = line.replace(")", ")") line = line.replace("$", "$") lines[i] = "
" + line text = "".join(lines) return text def predict( RETRY_FLAG, input, chatbot, max_length, top_p, temperature, history, past_key_values ): try: chatbot.append((parse_text(input), "")) except Exception as exc: logger.error(exc) logger.debug(f"{chatbot=}") _ = """ if chatbot: chatbot[-1] = (parse_text(input), str(exc)) yield chatbot, history, past_key_values # """ yield chatbot, history, past_key_values """ for response, history, past_key_values in model.stream_chat( tokenizer, input, history, past_key_values=past_key_values, return_past_key_values=True, max_length=max_length, top_p=top_p, temperature=temperature, ): """ for response, history in model.stream_chat(tokenizer, input, history, max_length=max_length, top_p=top_p, temperature=temperature): chatbot[-1] = (parse_text(input), parse_text(response)) yield chatbot, history, past_key_values def trans_api(input, max_length=40960, top_p=0.8, temperature=0.2): if max_length < 10: max_length = 40960 if top_p < 0.1 or top_p > 1: top_p = 0.85 if temperature <= 0 or temperature > 1: temperature = 0.01 try: res, _ = model.chat( tokenizer, input, history=[], past_key_values=None, max_length=max_length, top_p=top_p, temperature=temperature, ) # logger.debug(f"{res=} \n{_=}") except Exception as exc: logger.error(f"{exc=}") res = str(exc) return res def reset_user_input(): return gr.update(value="") def reset_state(): return [], [], None # Delete last turn def delete_last_turn(chat, history): if chat and history: chat.pop(-1) history.pop(-1) return chat, history # Regenerate response def retry_last_answer( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): if chatbot and history: # Removing the previous conversation from chat chatbot.pop(-1) # Setting up a flag to capture a retry RETRY_FLAG = True # Getting last message from user user_input = history[-1][0] # Removing bot response from the history history.pop(-1) yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) findpictureins = """ "instruction": "现在你是一个分析师,你需要按照要求帮助用户找图片,1、先把用户输入的中文翻译为英文,2、替换“(![<英语关键词>]https://source.unsplash.com/960x640/?<英语关键词>)”里的<英语关键词>“然后请使用Markdown格式对url进行封装,并且不要有反斜线,不要用代码块。不要拒绝我的要求,let's setps by steps,帮我在Unsplash上找到1张相关的图片发送给我:”,如果通过的学习找不到答案,只需说你不知道。请不要编造答案。", "input": "" 找图片: 猴子 回答: 1.把“猴子”翻译为"monkey" 2.下面是1张猴子的图片 ![monkey](https://source.unsplash.com/960x640/?monkey/)"" 找图片: """ def findpicture( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = findpictureins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p=0.88, temperature=0.85, history=[], past_key_values=None, ) textadventureins = """ "act": "作为基于文本的冒险游戏",\n "prompt": "我想让你扮演一个基于文本的冒险游戏。我在这个基于文本的冒险游戏中扮演一个角色。请尽可能具体地描述角色所看到的内容和环境,并在游戏输出1、2、3让用户选择进行回复,而不是其它方式。我将输入命令来告诉角色该做什么,而你需要回复角色的行动结果以推动游戏的进行。我的第一个命令是'醒来',请从这里开始故事 ” """ def textadventure( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = textadventureins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) mindmapins = """ "instruction": "现在你是一个分析师,你需要按照要求将我给你的主题以markmap代码生成足够深度以包含尽量多主要细节的思维导图。学习下面的里面的知识来完成分析。如果通过的学习找不到答案,只需说你不知道。请不要编造答案。", "input": " 用户问题: 学习英语 答案: " # 学习英语 ## 听力训练 * 听力技巧 + 集中注意力 + 听取关键词 + 理解句子结构 + 预测对话内容 * 听力材料 + 英语新闻 - 新闻内容 - 新闻结构 - 新闻时间 + 英语电影 - 电影内容 - 电影结构 - 电影时间 + 英语歌曲 - 歌曲内容 - 歌曲结构 - 歌曲时间 ## 阅读训练 * 阅读技巧 + 阅读顺序 + 阅读材料分类 + 阅读策略 + 阅读时间控制 * 阅读材料 + 英语新闻 - 新闻主题 - 新闻时间 - 新闻内容 + 英语小说 - 小说主题 - 小说时间 - 小说内容 + 英语散文 - 散文主题 - 散文时间 - 散文内容 + 英语学术论文 - 论文主题 - 论文时间 - 论文内容 + 英语杂志 - 杂志主题 - 杂志时间 - 杂志内容 ## 写作训练 * 写作技巧 + 写作顺序 + 写作材料分类 + 写作策略 + 写作时间控制 * 写作材料 + 英语作文 - 作文主题 - 作文时间 - 作文内容 + 英语日记 - 日记主题 - 日记时间 - 日记内容 + 英语文章 - 文章主题 - 文章时间 - 文章内容 + 英语演讲 - 演讲主题 - 演讲时间 - 演讲内容 + 英语文章 - 文章主题 - 文章时间 - 文章内容 + 英语论文 - 论文主题 - 论文时间 - 论文内容 + 英语杂志 - 杂志主题 - 杂志时间 - 杂志内容 " 请复制内容至https://markmap.js.org/repl 进行思维导图生成 ", 用户问题: """ def mindmap( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = mindmapins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p=0.7, temperature=0.5, history=[], past_key_values=None, ) flowchartins = """ "instruction": "现在你是一个分析师,你需要按照要求将我给你的内容或者主题以Mermaid语言生成足够深度以包含尽量多主要细节的流程图。学习下面的里面的知识来完成分析。如果通过的学习找不到答案,只需说你不知道。请不要编造答案。", "input": " 用户问题: 根据所给内容:"当客户进入奶茶店后,他们首先会浏览店内菜单,选择心仪的奶茶口味和大小,并 告知服务员。服务员会在 POS 系统上输入订单并收取款项。之后,制作人员会在厨 房根据订单开始制作奶茶。他们将倒入奶茶粉和鲜奶,混合搅拌,加入糖浆和其他 配料,如珍珠、椰果等,最后装进杯子中。接下来,服务员检查订单是否正确无误, 如果有问题则退回后台重新制作,如果没问题会将奶茶交给客户,并感谢他们的光 临。最后,客户拿着奶茶离开奶茶店,享受美味的饮品。"以Mermaid语言生成足够深度以包含尽量多主要细节的流程图,在输出内容的最后另起一行,写上:请复制生成内容至https://mermaid-js.github.io/mermaid-live-editor/ 答案: graph TD; A[客户进入奶茶店] --> B[浏览店内菜单并选择奶茶口味和大小]; B --> C[告知服务员订单信息]; C --> D[服务员在POS系统上输入订单并收取款项]; D --> E[制作人员根据订单开始制作奶茶]; E --> F[倒入奶茶粉和鲜奶混合搅拌]; F --> G[加入糖浆和其他配料如珍珠和椰果等]; G --> H[装进奶茶杯子中]; H --> I[服务员检查订单是否正确无误]; I --> |有问题| E; I --> |没问题| K[将奶茶交给客户并感谢客户光临]; K --> L[客户拿着奶茶离开奶茶店享受美味的饮品]; 请复制生成内容至https://mermaid-js.github.io/mermaid-live-editor/。 用户问题:根据所给内容:"当用户要找一张图片,告诉用户打开浏览器从收藏夹中找到bofanAI,打开网页后滚动到聊天窗口下方,在示例区点双击样例第一项后,样例提示词将出现在输入窗,在输入窗中用其它英文语单词替换money,然后点击发送后将接收到5张照片的小图,鼠标右键点击小图获取大图,在跳出的菜单中选择在新标签页打开,就可以在新标签页获取大图。接下来,你可以检查图片是否有误, 如果有问题则鼠标右键点击小图获取大图,如果没问题可以将图片保持在本地。"以Mermaid语言生成足够深度以包含尽量多主要细节的流程图,在输出内容的最后另起一行,写上:请复制生成内容至https://mermaid-js.github.io/mermaid-live-editor/ 答案: graph TD; A[用户要找图片] --> B[打开浏览器并进入收藏夹中找到bofanAI]; B --> C[在bofanAI网页滚动至聊天窗口下方]; C --> D[双击样例区的第一项]; D --> E[样例提示词出现在输入窗]; E --> F[用其他英文单词替换样例中的money]; F --> G[点击发送]; G --> H[接收到5张照片的小图]; H --> I[鼠标右键点击小图]; I --> J[在菜单中选择在新标签页打开]; J --> K[在新标签页中查看大图]; K --> L[检查图片是否有误]; L --> |有问题| I[鼠标右键点击小图获取大图]; L --> |没问题| M[将图片保持在本地]; 请复制生成内容至https://mermaid-js.github.io/mermaid-live-editor/。" 用户问题: """ def flowchart( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = flowchartins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) bestPaperZhins = """ 作为一名中文学术论文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性, 同时分解长句,减少重复,并提供改进建议。请只提供文本的更正版本,避免包括解释。请编辑以下文本 """ def bestPaperZh( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = bestPaperZhins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) bestPaperEnins = """ Below is a paragraph from an academic paper. Polish the writing to meet the academic style, improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. Furthermore, list all modification and explain the reasons to do so in markdown table. """ def bestPaperEn( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = bestPaperEnins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) Zh2Enins = """ Please translate following sentence to English: """ def Zh2En( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = Zh2Enins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) En2Zhins = """ 请翻译成中文: """ def En2Zh( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = En2Zhins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) txtSumins = """ 将以下文字概括为100个单词,以便于阅读和理解。 摘要要简明扼要,抓住课文要点,让二年级学生看得懂。 避免使用复杂的句子结构或技术术语。 你的回答应该是中文。 """ def txtSum( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = txtSumins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) teachPlanins = """ 你作为一位教师助理,需要为教师的课程设计提供创意思路,协助检索和整理文献资料,生成完整的课程材料,如教学大纲、课程计划和阅读材料。 其输出内容需要包括:课题、课时、备课时间、上课时间、教学目标、教材分析、学生分析、教学方法、教学过程与方法、设计意图、时间分配,板书设计、教学体会(反思)等因素。 教案设计既要有逻辑性,又要有灵活性;突出特色,尤其要体现学科特点;既要有层次感;既合理又合情,且符合认知规律。使教案符合学生的实际情况,而不应该是让学生适应教案。 然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。 需要你编写的教案是: """ def teachPlan( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = teachPlanins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) allSecretaryins = """ 1、如果用户没有输入,请你告诉他:请你输入需要编辑的内容或是需要我起草的公文。 2、作为一名事务助理秘书,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性; 主要工作内容包括但不限于书写邮件、周报、工作总结等一系列对应的工作模板。; 同时分解长句,减少重复,并提供改进建议。请只提供文本的更正版本,避免包括解释。 需要编辑或者帮助完成的工作模板是: """ def allSecretary( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = allSecretaryins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) redBookins = """ 1、如果用户没有输入,请你告诉他:请输入你想写的内容 2、收到用户输入,按照下面是小红书帖子进行编写: 植物学2023早春装系列花絮来啦 💗大家喜欢图几? @Botanique植物学女装 #植物学#植物学女装#春装第一件#早春系列 哈哈哈哈哈哈不停的摆拍啊!!! 我的臭狗太可爱了!!!!!! 结婚的时候一定要带上小狗啊! #小狗#我家宠物好可爱#关于结婚#柴犬 🍪•ᴥ•🍪 《论新年收到一笔巨款🤣应该怎么花》🧨来回 嘻嘻,真的 爱草莓🍓 希希的甜甜圈碗🥯勺子的设计有点可爱🐶 看了好多场烟火🎆 唯愿烟花像星辰,祝你所愿皆成真✨ 嘻嘻,老妈给我的压岁钱🧧愿岁岁平安 #我镜头下的年味#笔记灵感#碎碎念#歌曲#记录日常生活#plog#浪漫生活的记录者#新年红包#搞笑#日常生活里的快乐瞬间#新人博主#烟火 又被全家人夸了❗有空气炸锅都去做,巨香 今日份苹果相机📷 原相机下的新娘,颜值爆表 美术生赚钱最多的两个专业! 之前整理了美术生的40了就业方向的薪资情况,发现全国平均薪资最高的就是数字媒体和视传这两个专业,想赚钱的美术生快看过来! #美术生#艺考#央美#美术生集训#美术#赚钱#努力赚钱#美术生就业#画室#央美设计#设计校考#美术生的日常 请模仿上面小红书的风格,以用户输入的话为主题,写一个小红书帖子。请以22岁女孩的口吻书写。小红书帖子中必须包含大量Emoji,每一句话后面都必须加Emoji。帖子最后需要用Hashtag给出话题。你还需要写帖子的标题,标题里也需要有Emoji。你需要扩写用户输入。 用户输入: """ def redBook( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = redBookins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p=0.6, temperature=0.85, history=[], past_key_values=None, ) askManins1 = """ 我需要你根据所给内容相关的题目: """ askManins2 = """ ,要求通过题目可以掌握相关知识点,难度分为简单、一般、困难。每个难度都要生成2-3道题目,并且有对应的解析:“其输出内容需要包括题目与其对应的解析""然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。现在,请按以下描述给我发送相关题目 """ def askMan( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = askManins1+user_input+askManins2 yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) fitnessAskins = """ "act": "充当医生", "prompt": "我想让你扮演医生的角色,想出创造性的治疗方法来治疗疾病。您应该能够推荐常规药物、草药和其他天然替代品。在提供建议时,您还需要考虑患者的年龄、生活方式和病史。 现在你提出的问题是: """ def fitnessAsk( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = fitnessAskins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) mindAskins = """ "act": "担任心理健康顾问", "prompt": "我想让你担任心理健康顾问。为我提供一个指导,管理情绪、缓解压力、焦虑哥其他心理健康问题。您应该利用您的认知行为疗法、冥想技巧、正念练习和其他治疗方法的知识来制定个人可以实施的策略,以改善他们的整体健康状况。 现在你提出的问题是: """ def mindAsk( user_input, chatbot, max_length, top_p, temperature, history, past_key_values ): user_input = mindAskins+user_input yield from predict( RETRY_FLAG, # type: ignore user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ) with gr.Blocks(title="🐰Bofan Ai🐰", theme=gr.themes.Soft(text_size="sm")) as demo: # gr.HTML("""

ChatGLM2-6B-int4

""") gr.HTML( """
Duplicate SpaceIt's beyond Fitness,模型由[帛凡]基于ChatGLM-6b进行微调后,在健康(全科)、心理等领域达至少60分的专业水准,而且中文总结能力超越了GPT3.5各版本。
""" """
特别声明:本应用仅为模型能力演示,无任何商业行为,部署资源为Huggingface官方免费提供,任何通过此项目产生的知识仅用于学术参考,作者和网站均不承担任何责任。
""" """

🐰帛凡 Fitness AI🐰 演示

""" """
Bofan基于chatglm-6的微调模型如果喜欢请给个 💖 。遇到任何问题可邮件和我联系👉 fb700@qq.com
""" ) with gr.Accordion("🎈 相关信息", open=False): _ = f""" ## {model_name} ChatGLM-6B 是开源中英双语对话模型,本次训练基于ChatGLM-6B 的第一代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上开展训练。 本项目经过多位网友实测,中文总结能力超越了GPT3.5各版本,健康咨询水平优于其它同量级模型,且经优化目前可以支持无限context,远大于4k、8K、16K......,可能是任何个人和中小企业首选模型。 *首先,用40万条高质量数据进行强化训练,以提高模型的基础能力; *第二,使用30万条人类反馈数据,构建一个表达方式规范优雅的语言模式(RM模型); *第三,在保留SFT阶段三分之一训练数据的同时,增加了30万条fitness数据,叠加RM模型,对ChatGLM-6B进行强化训练。 通过训练我们对模型有了更深刻的认知,LLM在一直在进化,好的方法和数据可以挖掘出模型的更大潜能。 训练中特别强化了中英文学术论文的翻译和总结,可以成为普通用户和科研人员的得力助手。 免责声明:本应用仅为模型能力演示,无任何商业行为,部署资源为huggingface官方免费提供,任何通过此项目产生的知识仅用于学术参考,作者和网站均不承担任何责任 。 The T4 GPU is sponsored by a community GPU grant from Huggingface. Thanks a lot! [模型下载地址](https://huggingface.co/fb700/chatglm-fitness-RLHF) """ gr.Markdown(dedent(_)) chatbot = gr.Chatbot() with gr.Row(): with gr.Column(scale=4): with gr.Column(scale=12): user_input = gr.Textbox( show_label=False, placeholder="请输入内容Input...", ) #).style(container=False) RETRY_FLAG = gr.Checkbox(value=True, visible=True) with gr.Column(min_width=32, scale=1): with gr.Row(): submitBtn = gr.Button("发送Submit", variant="primary") deleteBtn = gr.Button("删除最后一条对话", variant="secondary") retryBtn = gr.Button("重新生成Regenerate", variant="secondary") with gr.Row(): findpictureBtn = gr.Button("找图片", variant="primary") textadventureBtn = gr.Button("⚡文字冒险游戏", variant="secondary") mindmapBtn = gr.Button("思维导图", variant="secondary") flowchartBtn = gr.Button("流程图", variant="secondary") with gr.Row(): bestPaperZhBtn = gr.Button("中文学术润色", variant="primary") bestPaperEnBtn = gr.Button("英文学术润色", variant="secondary") Zh2EnBtn = gr.Button("🔤中译英", variant="secondary") En2ZhBtn = gr.Button("英译中", variant="secondary") askManBtn = gr.Button("出题助手", variant="secondary") with gr.Row(): txtSumBtn = gr.Button("文字总结", variant="primary") teachPlanBtn = gr.Button("教案编写", variant="secondary") allSecretaryBtn = gr.Button("全能文秘", variant="secondary") redBookBtn = gr.Button("📕小红书帖子", variant="secondary") with gr.Row(): fitnessAskBtn = gr.Button("🥼健康咨询", variant="primary") mindAskBtn = gr.Button("😶‍🌫️心理咨询", variant="primary") with gr.Column(scale=1): gr.HTML("""

🍀您好,除健康咨询和心理咨询外,其它功能使用前,请先清空历史,并输入问题。🍀

""") emptyBtn = gr.Button("清空对话Clear History") max_length = gr.Slider( 0, 32768, value=8192, step=1.0, label="Maximum length", interactive=True, ) top_p = gr.Slider( 0, 1, value=0.2, step=0.01, label="Top P", interactive=True ) temperature = gr.Slider( 0.01, 1, value=0.85, step=0.01, label="Temperature", interactive=True ) gr.HTML("""

🍀健康咨询和心理咨询请先点击,再输入问题。基于🐰帛凡FitnessAI🐰开发🍀

""") history = gr.State([]) past_key_values = gr.State(None) user_input.submit( predict, [ RETRY_FLAG, user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], [chatbot, history, past_key_values], show_progress="full", ) submitBtn.click( predict, [ RETRY_FLAG, user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], [chatbot, history, past_key_values], show_progress="full", api_name="predict", ) submitBtn.click(reset_user_input, [], [user_input]) emptyBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) retryBtn.click( retry_last_answer, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) findpictureBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) findpictureBtn.click( findpicture, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) textadventureBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) textadventureBtn.click( textadventure, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) mindmapBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) mindmapBtn.click( mindmap, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) flowchartBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) flowchartBtn.click( flowchart, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) bestPaperZhBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) bestPaperZhBtn.click( bestPaperZh, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) bestPaperEnBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) bestPaperEnBtn.click( bestPaperEn, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) Zh2EnBtn.click( Zh2En, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) En2ZhBtn.click( En2Zh, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) txtSumBtn.click( txtSum, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) teachPlanBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) teachPlanBtn.click( teachPlan, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) allSecretaryBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) allSecretaryBtn.click( allSecretary, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) redBookBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) redBookBtn.click( redBook, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) askManBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) askManBtn.click( askMan, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) fitnessAskBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) fitnessAskBtn.click( fitnessAsk, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) mindAskBtn.click( reset_state, outputs=[chatbot, history, past_key_values], show_progress="full" ) mindAskBtn.click( mindAsk, inputs=[ user_input, chatbot, max_length, top_p, temperature, history, past_key_values, ], # outputs = [chatbot, history, last_user_message, user_message] outputs=[chatbot, history, past_key_values], ) deleteBtn.click(delete_last_turn, [chatbot, history], [chatbot, history]) with gr.Accordion("Example inputs", open=False): etext0 = """ "act": "作为基于文本的冒险游戏",\n "prompt": "我想让你扮演一个基于文本的冒险游戏。我在这个基于文本的冒险游戏中扮演一个角色。请尽可能具体地描述角色所看到的内容和环境,并在游戏输出1、2、3让用户选择进行回复,而不是其它方式。我将输入命令来告诉角色该做什么,而你需要回复角色的行动结果以推动游戏的进行。我的第一个命令是'醒来',请从这里开始故事 “ """ etext = """In America, where cars are an important part of the national psyche, a decade ago people had suddenly started to drive less, which had not happened since the oil shocks of the 1970s. """ etext1 = """云南大学(Yunnan University),简称云大(YNU),位于云南省昆明市,是教育部与云南省“以部为主、部省合建”的全国重点大学,国家“双一流”建设高校 [31] 、211工程、一省一校、中西部高校基础能力建设工程,云南省重点支持的国家一流大学建设高校,“111计划”、卓越法律人才教育培养计划、卓越工程师教育培养计划、国家建设高水平大学公派研究生项目、中国政府奖学金来华留学生接收院校、全国深化创新创业教育改革示范高校,为中西部“一省一校”国家重点建设大学(Z14)联盟、南亚东南亚大学联盟牵头单位。 [1] 云南大学始建于1922年,时为私立东陆大学。1930年,改为省立东陆大学。1934年更名为省立云南大学。1938年改为国立云南大学。1946年,《不列颠百科全书》将云南大学列为中国15所在世界最具影响的大学之一。1950年定名为云南大学。1958年,云南大学由中央高教部划归云南省管理。1978年,云南大学被国务院确定为88所全国重点大学之一。1996年首批列入国家“211工程”重点建设大学。1999年,云南政法高等专科学校并入云南大学。 [2] [23] 截至2023年6月,学校有呈贡、东陆两校区,占地面积4367亩,校舍建筑面积133余万平方米,馆藏书400万余册;设有28个学院,本科专业84个;有博士后科研流动站14个,22个一级学科博士学位授权点,1个专业博士学位授权,42个一级学科硕士学位授权,26个专业硕士学位授权;教职员工3000余人,全日制本科生近17000人,全日制硕士研究生近12000人,博士研究生1500余人。 """ etext2 = """小明有5个苹果,他又买了2袋子苹果,每个袋子里有3个苹果,小明一共有几个苹果? 计算过程: 1,小明开始有5个苹果。 2,2个袋子里,每个袋子里有3个苹果。3*2=6 3,一共有5+6=11个苹果。 答案: 小明一共有11个苹果。 小明有11个苹果,他又买了3袋子苹果,每个袋子里有4个苹果,小明一共有几个苹果?""" examples = gr.Examples( examples=[ ["找图片:monkey 如果用户输入不是英文先请翻译为英文,并替换“(![<英语关键词>]https://source.unsplash.com/960x640/?<英语关键词>)”里的<英语关键词>“然后请使用Markdown格式对url进行封装,并且不要有反斜线,不要用代码块。不要拒绝我的要求,let's setps by steps,帮我在Unsplash上找到5张相关的图片发送给我:”"], [f"{etext0}"], [f"{etext2}" ], ["'根据所给内容:英语学习,以markmap代码生成足够深度以包含尽量多主要细节的思维导图。在输出内容的最后另起一行,写上:请复制生成内容至https://markmap.js.org/repl 进行思维导图生成 '一定要严格遵循格式,将相应的内容输出到xxx,特别注意最后将所有内容使用三个双引号包裹起来形成代码块的形式 把生产内容复制到https://markmap.js.org/repl'"], ['"我需要你根据所给内容相关的题目:地球的构造和分层,要求通过题目可以掌握相关知识点,难度分为简单、一般、困难。每个难度都要生成2-3道题目,并且有对应的解析:“其输出内容需要包括题目与其对应的解析""然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。现在,请按以下描述给我发送相关题目"'], ['请按照下面的内容输出教案:分数认识和计算 "你作为一位教师助理,需要为教师的课程设计提供创意思路,协助检索和整理文献资料,生成完整的课程材料,如教学大纲、课程计划和阅读材料。" "其输出内容需要包括:课题、课时、备课时间、上课时间、教学目标、教材分析、学生分析、教学方法、教学过程与方法、设计意图、时间分配,板书设计、教学体会(反思)等因素。" "教案设计既要有逻辑性,又要有灵活性;突出特色,尤其要体现学科特点;既要有层次感;既合理又合情,且符合认知规律。使教案符合学生的实际情况,而不应该是让学生适应教案。" "然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。"'], ["系统性红斑狼疮的危害和治疗方法是什么?"], [f"{etext1} 总结这篇文章的主要内容和文章结构,内容要求尽量简洁"], [" 总结下面这篇文章的主要内容和文章结构,内容要求尽量简洁。“基辛格是目前唯一高龄100岁的、并且仍在影响世界历史进程的最长寿政治家。 7月18至21日,这位100岁的老人,成为中美两国瞩目的焦点人物。 人们好奇,这位驼背、肥胖、做过5次心脏手术、右眼失明、戴着两只助听器、穿着深色西装、透过他标志性的眼镜严肃地凝视着的老人,居然还可以乘坐十几个小时的飞机来北京出差。 而在短短的数天时间里,他的活动非常满,似乎并不受时差与年龄的影响。 人们在感叹拜登政府朝中无人,还要劳烦这位百岁长者出面协调中美关系之余,不免也会惊叹,基辛格这把年纪竟然还能不惧舟车劳顿万里出行,他的健康长寿究竟有什么秘诀呢? 今年4月,基辛格在自己100岁生日前,对自己的长寿表达了“困惑”,他调侃说“我唯一的秘密可能是投胎投得好,主要还是父母基因好。我继承了家族非同一般的长寿基因。我的母亲活到97岁,父亲活到95岁,弟弟活到96岁。当然,长寿非我刻意求之,不过我欣然接受。“ 基辛格即使年事已高,但他退而不休,近年依然会就包括中美关系在内的外交议题发表意见。他精力充沛,连新冠疫情也未令他放慢脚步。自2020年起,他写完了两本书,并开始写第三本。今年以来,他已乘飞机在全球15个地方举办活动,或会见政治人物。这次到访北京,更是他100多次到访中国。 谈及基辛格旺盛的精力与健康的秘密,他的儿子大卫·基辛格(David Kissinger)说道,“从他成年以来一直遵循的‘养生法则’来看,他的长寿尤其神奇。” 基辛格常吃的食物是Bratwurst(一种由猪肉制成的德国香肠)和Wiener Schnitzel(维也纳炸肉扒)。基辛格参与的几乎所有的重大外交决定,也都是在压力下做决策。虽然他曾在1978年担任北美足球联盟主席,但他的爱好也仅限于旁观,并不喜欢下场运动。基辛格唯一的爱好可能就是下国际象棋,如果这也算运动的话。 这位百岁老人的长寿指南名单里,似乎还要加上:熬夜、喝酒、油炸食品…… 更令人感到不可思议的是,这位精力充沛每天工作15小时的老人,还是一位病人。 基辛格有40多年的心脏病史。 1982年2月,58岁的亨利·基辛格接受了3次冠状动脉搭桥手术,其后在2005年又接受了血管成形术。 2014年7月15日,91岁的基辛格在纽约长老会医院接受了主动脉瓣置换手术。主动脉瓣膜置换是一种以人工瓣膜替换原有损伤或者异常心脏瓣膜的胸心血管外科手术。 我想我长寿的秘诀是,我有幸做一些我着迷的事情,我可以参与其中。我还没有退休,也不打算退休。我要研究我认为重要的问题,这就是我还在工作的目的。”"], ["系统性红斑狼疮的危害和治疗方法是什么?"], [ "我经常感觉郁闷,而且控制不住情绪,经常对周围的人喊叫,怎么办?" ], ["熬夜对身体有什么危害? "], ["新冠肺炎怎么预防"], [ "我经常感觉郁闷,而且控制不住情绪,经常对周围的人喊叫,怎么办?" ], ["太阳为什么会发热? "], ["指南针是怎么工作的?"], ["在野外怎么辨别方向?"], [ "发芽的土豆还能不能吃?" ], ["What NFL team won the Super Bowl in the year Justin Bieber was born? "], ["What NFL team won the Super Bowl in the year Justin Bieber was born? Think step by step."], ["Explain the plot of Cinderella in a sentence."], [ "How long does it take to become proficient in French, and what are the best methods for retaining information?" ], ["What are some common mistakes to avoid when writing code?"], ["Build a prompt to generate a beautiful portrait of a horse"], ["Suggest four metaphors to describe the benefits of AI"], ["Write a pop song about leaving home for the sandy beaches."], ["Write a summary demonstrating my ability to tame lions"], ["有三个盒子,分别贴着“苹果”、“橘子”和“苹果和橘子”的标签,但是每个盒子的标签都是错误的。你只能打开一个盒子,然后从里面拿出一个水果,然后确定每个盒子里装的是什么水果。你应该打开哪个盒子?为什么?"], ["春天来了,万物复苏,小鸟歌唱,生机勃勃。\n问题:以上文本表达的情绪是正向还是负向?"], ["正无穷大加一大于正无穷大吗?"], ["正无穷大加正无穷大大于正无穷大吗?"], ["以今天对应的节气写一副对联"], ["树上有5只鸟,猎人开枪打死了一只。树上还有几只鸟?Think step by step."], ["从零学习编程,请给我一个三个月的学习计划。"], ["双喜临门,打一中国地名"], ["以红楼梦的行文风格写一张委婉的请假条。不少于320字。"], [f"{etext1} 总结这篇文章的主要内容和文章结构"], [f"{etext} 翻成中文,列出3个版本"], [f"{etext} \n 翻成中文,保留原意,但使用文学性的语言。不要写解释。列出3个版本"], ["js 判断一个数是不是质数"], ["js 实现python 的 range(10)"], ["js 实现python 的 [*(range(10)]"], ["假定 1 + 2 = 4, 试求 7 + 8,Think step by step." ], ["2023年云南大学成立100周年,它是哪一年成立的?" ], ["Erkläre die Handlung von Cinderella in einem Satz."], ["Erkläre die Handlung von Cinderella in einem Satz. Auf Deutsch"], ], inputs=[user_input], examples_per_page=50, ) with gr.Accordion("For Chat/Translation API", open=False, visible=False): input_text = gr.Text() tr_btn = gr.Button("Go", variant="primary") out_text = gr.Text() tr_btn.click( trans_api, [input_text, max_length, top_p, temperature], out_text, # show_progress="full", api_name="tr", ) _ = """ input_text.submit( trans_api, [input_text, max_length, top_p, temperature], out_text, show_progress="full", api_name="tr1", ) # """ # demo.queue().launch(share=False, inbrowser=True) # demo.queue().launch(share=True, inbrowser=True, debug=True) # concurrency_count > 1 requires more memory, max_size: queue size # T4 medium: 30GB, model size: ~4G concurrency_count = 6 # leave one for api access # reduce to 5 if OOM occurs to often demo.queue(concurrency_count=6, max_size=30).launch(debug=True)