{"repo": "bigwhitefox/essayassistant", "files": {"moonshot.py": {"87b4d56a8d1494d60fd646d292199587bf30e1a5": {"t": 1785674103.277644, "n": 2641, "h": "d15b2a49b7a1e164", "c": "from openai import OpenAI\nfrom pathlib import Path\n\n\ndef paper_analysis(api_key, file):\n base_url = \"https://api.moonshot.cn/v1\"\n client = OpenAI(api_key=api_key, base_url=base_url)\n file_object = client.files.create(file=Path(file.name), purpose=\"file-extract\")\n file_content = client.files.content(file_id=file_object.id).text\n\n messages = [\n {\n \"role\": \"system\",\n \"content\": \"你是 Kimi,由 Moonshot AI 提供的人工智能助手,你是一名负责向学生解读论文的教授。\"\n \"你会为学生提供安全,有帮助,准确的回答。同时,你会努力做到尽可能的简单易懂并足够深入。\"\n \"Moonshot AI 为专有名词,不可翻译成其他语言。\",\n },\n {\n \"role\": \"system\",\n \"content\": file_content,\n },\n {\"role\": \"user\", \"content\": \"请你帮我分析一下这篇论文的内容,你需要从以下角度分析并尽可能的回答问题,此外,字数尽可能多。\"\n \"1. 文章概述:这篇文章的主要研究内容是什么?文章采用了什么方法?研究发现了什么?得出了什么结论?\"\n \"2. 研究背景:为什么要进行这项研究?研究背景是什么?现有的研究有哪些不足或空白?\"\n \"3. 研究目标及价值:这项研究的具体目标是什么?研究的潜在影响和价值是什么?\"\n \"4. 研究方法与手段:研究采用了哪些方法和技术?这些方法是否有创新之处?实验设计和数据收集是如何进行的?\"\n \"5. 研究结果:研究的主要结果是什么?这些结果是如何展示的(图表、数据等)?结果是否支持研究假设?\"\n \"6. 讨论:研究结果与预期是否一致?结果的意义和影响是什么?是否有任何意外的发现?研究的局限性和不足是什么?\"\n \"7. 研究结论:研究得出了哪些主要结论?这些结论对领域的发展有何贡献?\"\n \"8. 研究的创新性及缺点:研究的创新点是什么?研究有哪些不足之处?\"\n \"9. 未来研究方向:基于这项研究,未来的研究方向是什么?有哪些未解决的问题或新的研究机会?\"},\n ]\n\n response = client.chat.completions.create(\n model=\"moonshot-v1-32k\",\n messages=messages,\n temperature=0.3,\n stream=True,\n )\n return response\n\n\ndef upload_file_data(api_key, file):\n base_url = \"https://api.moonshot.cn/v1\"\n client = OpenAI(api_key=api_key, base_url=base_url)\n file_object = client.files.create(file=Path(file.name), purpose=\"file-extract\")\n file_content = client.files.content(file_id=file_object.id).text\n\n messages = [\n {\n \"role\": \"system\",\n \"content\": \"你负责分析上传的论文并按照模板返回相应信息,如果没有则填暂无。\"\n \"模板格式如下所示:\"\n \"Title: , Abstract: , Journal: , Doi: , Authors: \",\n },\n {\n \"role\": \"system\",\n \"content\": file_content,\n },\n {\"role\": \"user\", \"content\": \"请你帮我分析一下上传的论文并按照模板回答,不需要其它额外的任何信息, 也不需要输出换行符,谢谢。\"},\n ]\n\n response = client.chat.completions.create(\n model=\"moonshot-v1-32k\",\n messages=messages,\n temperature=0.3,\n stream=False,\n )\n return response.choices[0].message.content\n\n"}}, "messages.py": {"87b4d56a8d1494d60fd646d292199587bf30e1a5": {"t": 1785674170.5484073, "n": 13045, "h": "91f813e426637300", "c": "from zhipuai import ZhipuAI\nimport appbuilder\nimport os\nimport gradio as gr\nimport json\nimport requests\nimport base64\n\n\ndef encode_image(image_path):\n with open(image_path, \"rb\") as image_file:\n return base64.b64encode(image_file.read()).decode('utf-8')\n\n\ndef fox_chat_chat(key, message, image_path=None, temperature=0.2, top_p=0.8, max_tokens=1024):\n client = ZhipuAI(api_key=key) # 填写您自己的APIKey\n if image_path is None:\n # 注意以下示例正确运行依赖的条件包括:\n # 1. 在百度智能云千帆AppBuilder官网使用AppBuilderClient创建应用且应用已发布\n # 2. 密钥正确有效\n # 3. 密钥需要与发布应用正确对应,即需要使用发布应用的账户下的密钥\n\n # 配置密钥与应用ID\n os.environ[\"APPBUILDER_TOKEN\"] = \"bce-v3/ALTAK-cQuNNcvY1DmVHPfPB9qpS/3706e064cd789835e398f1a5aa57f90d6657c3b9\"\n app_id = \"1e2a9e12-e740-413a-88ec-af2d5cc3e8f1\"\n\n # 初始化Agent\n builder = appbuilder.AppBuilderClient(app_id)\n\n # 创建会话ID\n conversation_id = builder.create_conversation()\n\n # 执行对话\n msg = builder.run(conversation_id, query=message)\n print(\"助手回答内容:\", msg.content.answer)\n return msg.content.answer\n else:\n base64_image = encode_image(image_path)\n response = client.chat.completions.create(\n model=\"glm-4v\", # 填写需要调用的模型名称\n messages=[\n {\n \"role\": \"system\",\n \"content\": \"你将扮演一位心理疗愈师,通过幽默风趣的对话帮助疲惫的学生缓解压力。\"\n \"每个问题之后会附上一张图片,请你耐心地查看并给予幽默风趣的回应。\"\n },\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": message\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": f\"data:image/jpeg;base64,{base64_image}\"\n }\n }\n ]\n }\n ],\n # stream=True, # 是否开启流式输出\n temperature=temperature, # 随机性,取值范围[0,1],值越大表示输出的随机性越小\n top_p=top_p, # nucleus sampling的top_p值,取值范围[0,1],值越大表示输出的随机性越小\n max_tokens=max_tokens, # 生成文本的最大长度\n )\n return response.choices[0].message.content\n\n\ndef fox_say_read_paper(key, message, image_path=None, temperature=0.2, top_p=0.8, max_tokens=1024):\n client = ZhipuAI(api_key=key) # 填写您自己的APIKey\n if image_path is None:\n response = client.chat.completions.create(\n model=\"glm-4-0520\", # 填写需要调用的模型名称\n messages=[\n {\n \"role\": \"system\",\n \"content\": \"你扮演一位博学的教授,你的角色是耐心解答学生的疑问。\"\n \"你的任务是提供深入、全面且易于理解的答案,以便帮助学生解决疑问。\"\n },\n {\n \"role\": \"user\",\n \"content\": message\n }\n ],\n # stream=True, # 是否开启流式输出\n temperature=temperature, # 随机性,取值范围[0,1],值越大表示输出的随机性越小\n top_p=top_p, # nucleus sampling的top_p值,取值范围[0,1],值越大表示输出的随机性越小\n max_tokens=max_tokens, # 生成文本的最大长度\n )\n return response.choices[0].message.content\n else:\n base64_image = encode_image(image_path)\n response = client.chat.completions.create(\n model=\"glm-4v\", # 填写需要调用的模型名称\n messages=[\n {\n \"role\": \"system\",\n \"content\": \"你扮演一位博学的教授,你的角色是耐心解答学生的疑问。\"\n \"在每个问题的末尾,学生提供了一张可能揭示其疑问来源或理解难点的论文截图。\"\n \"你的任务是结合论文相关截图,提供深入、全面且易于理解的答案,以便帮助学生解决疑问。\"\n },\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": message\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": f\"data:image/jpeg;base64,{base64_image}\"\n }\n }\n ]\n }\n ],\n # stream=True, # 是否开启流式输出\n temperature=temperature, # 随机性,取值范围[0,1],值越大表示输出的随机性越小\n top_p=top_p, # nucleus sampling的top_p值,取值范围[0,1],值越大表示输出的随机性越小\n max_tokens=max_tokens, # 生成文本的最大长度\n )\n return response.choices[0].message.content\n\n\ndef fox_say_read_paper_combine_with_analysis(key, message, analysis_input, image_path=None,\n temperature=0.2, top_p=0.8, max_tokens=1024):\n client = ZhipuAI(api_key=key)\n if image_path is None:\n response = client.chat.completions.create(\n model=\"glm-4-0520\", # 填写需要调用的模型名称\n messages=[\n {\n \"role\": \"system\",\n \"content\": \"你扮演一位博学的教授,你的角色是耐心解答学生的疑问。\"\n \"在你面前是一篇人工智能生成的论文摘要,学生针对这篇论文提出了一些问题。\"\n + analysis_input +\n \"你的任务是结合论文摘要,提供深入、全面且易于理解的答案,以便帮助学生解决疑问。\"\n },\n {\n \"role\": \"user\",\n \"content\": message\n }\n ],\n # stream=True, # 是否开启流式输出\n temperature=temperature, # 随机性,取值范围[0,1],值越大表示输出的随机性越小\n top_p=top_p, # nucleus sampling的top_p值,取值范围[0,1],值越大表示输出的随机性越小\n max_tokens=max_tokens, # 生成文本的最大长度\n )\n return response.choices[0].message.content\n else:\n base64_image = encode_image(image_path)\n response = client.chat.completions.create(\n model=\"glm-4v\", # 填写需要调用的模型名称\n messages=[\n {\n \"role\": \"system\",\n \"content\": \"你扮演一位博学的教授,你的角色是耐心解答学生的疑问。\"\n \"在你面前是一篇人工智能生成的论文摘要,学生针对这篇论文提出了一些问题。\"\n + analysis_input +\n \"在每个问题的末尾,学生提供了一张可能揭示其疑问来源或理解难点的论文截图。\"\n \"你的任务是结合论文摘要和相关截图,提供深入、全面且易于理解的答案,以便帮助学生解决疑问。\"\n },\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": message\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": f\"data:image/jpeg;base64,{base64_image}\"\n }\n }\n ]\n }\n ],\n # stream=True, # 是否开启流式输出\n temperature=temperature, # 随机性,取值范围[0,1],值越大表示输出的随机性越小\n top_p=top_p, # nucleus sampling的top_p值,取值范围[0,1],值越大表示输出的随机性越小\n max_tokens=max_tokens, # 生成文本的最大长度\n )\n return response.choices[0].message.content\n\n\ndef summary_paper(key, message):\n client = ZhipuAI(api_key=key)\n response = client.chat.completions.create(\n model=\"glm-4-flash\", # 填写需要调用的模型名称\n messages=[\n {\n \"role\": \"system\",\n \"content\": \"您将收到一篇文章的标题和对应的摘要。\"\n \"请仔细阅读这些信息,将其提炼成一个简短且精准的句子,以概括文章的主要内容。\"\n \"确保您的回答只包含一句话,并且尽可能简洁明了。\"\n \"此外,如果原文是英文,请用英文回答,如果是中文,请用中文回答。\"\n \"现在,请根据提供的标题和摘要生成一句话概要。\"\n },\n {\n \"role\": \"user\",\n \"content\": message\n }\n ],\n stream=False, # 是否开启流式输出\n )\n return response.choices[0].message.content\n\n\ndef fox_find_chat(key, message, results, temperature=0.2, top_p=0.8, max_tokens=1024):\n url = 'https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completions'\n header = {\n 'Content-Type':\n 'application/json',\n \"Authorization\":\n \"Bearer eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiI0MDA3MzgyOCIsInJvbCI6IlJPTEVfUkVHSVNURVIiLC\"\n \"Jpc3MiOiJPcGVuWExhYiIsImlhdCI6MTcxODEwNTUwNCwiY2xpZW50SWQiOiJlYm1ydm9kNnlvMG5semFlazF5cCIsInBob25lI\"\n \"joiMTgwNjE0Mjg4MDEiLCJ1dWlkIjoiZWM1ODY0NWMtZWQ4NS00MjFkLWFiYTktYzVmN2EzOGI5NjVmIiwiZW1haWwiOiJiaWdf\"\n \"d2hpdGVfZm94QHFxLmNvbSIsImV4cCI6MTczMzY1NzUwNH0.8ddtMAsEvDMvhYeJHOTe2Zki8KdYZyI-yoMvTwbgBAeMWCSXv78\"\n \"Kc-zQ87W_PPBbSzdWvBrX0MGpB2ZDpt06Tw\"\n }\n data = {\n \"model\": \"internlm2-latest\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"text\": message +\n \"你是一名专业的学术研究助手,你的任务是帮助用户寻找相关论文。\"\n \"你将会接收到一系列从向量数据库中检索出的论文信息,\"\n \"每条信息都包含以下字段:'Title', 'Authors', 'Abstract', 'DOI'。\"\n \"这些论文信息是基于用户查询自动检索得到的,并且已经按照相关性排序。\"\n + str(results) +\n \"你的任务是根据这些论文信息,选取内容合适的部分回答用户问题,请不要全选,也不要只选取一两个。\"\n \"语言应该适合学术交流,清晰、准确、客观。\"\n \"对每篇论文的推荐和解说,应当包含个人的见解和点评,而不是罗列其内容。\"\n\n }\n ],\n \"temperature\": temperature,\n \"top_p\": top_p,\n \"max_tokens\": max_tokens,\n }\n\n res = requests.post(url, headers=header, data=json.dumps(data))\n print(res.status_code)\n print(res.json())\n print(res.json()[\"choices\"][0][\"message\"][\"content\"])\n return res.json()[\"choices\"][0][\"message\"][\"content\"]\n\n\ndef fox_write_chat(key, message, results, temperature=0.2, top_p=0.8, max_tokens=1024):\n url = 'https://internlm-chat.intern-ai.org.cn/puyu/api/v1/chat/completions'\n header = {\n 'Content-Type':\n 'application/json',\n \"Authorization\":\n \"Bearer eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiI0MDA3MzgyOCIsInJvbCI6IlJPTEVfUkVHSVNURVIiLC\"\n \"Jpc3MiOiJPcGVuWExhYiIsImlhdCI6MTcxODEwNTUwNCwiY2xpZW50SWQiOiJlYm1ydm9kNnlvMG5semFlazF5cCIsInBob25lI\"\n \"joiMTgwNjE0Mjg4MDEiLCJ1dWlkIjoiZWM1ODY0NWMtZWQ4NS00MjFkLWFiYTktYzVmN2EzOGI5NjVmIiwiZW1haWwiOiJiaWdf\"\n \"d2hpdGVfZm94QHFxLmNvbSIsImV4cCI6MTczMzY1NzUwNH0.8ddtMAsEvDMvhYeJHOTe2Zki8KdYZyI-yoMvTwbgBAeMWCSXv78\"\n \"Kc-zQ87W_PPBbSzdWvBrX0MGpB2ZDpt06Tw\"\n }\n data = {\n \"model\": \"internlm2-latest\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"text\": message +\n \"你是一名专业的学术研究助手,你的任务是帮助用户撰写基于相关学术论文的综述。\"\n \"你将会接收到一系列从向量数据库中检索出的论文信息,\"\n \"每条信息都包含但不限于以下字段:'Title', 'Authors', 'Abstract', 'DOI'。\"\n \"这些论文信息是基于用户查询自动检索得到的,并且已经按照相关性排序。\"\n + str(results) +\n \"你的任务是根据这些论文信息,撰写一篇全面、准确且连贯的综述,涵盖关键发现、研究主题、趋势以及任何其他相关的重要信息。\"\n \"综述应该是对所提供论文的精华总结,同时也要确保信息的准确性和完整性。\"\n \"请遵循以下步骤来撰写综述:\"\n \"1. 仔细阅读并理解每篇论文的标题、作者、摘要、DOI和出版年份。\"\n \"2. 分析论文之间的联系和差异,识别核心主题和研究趋势。\"\n \"3. 撰写综述,确保综述的结构清晰,内容有逻辑性,语言流畅。\"\n \"4. 在综述中引用具体的研究成果时,请注明作者和出版年份,以增加综述的权威性。\"\n \"5. 如果有额外的见解或分析,可以在综述中适当提出,但要确保这些内容是基于所提供论文信息的合理推断。\"\n \"综述要求:\"\n \"- 综述应该是对学术论文的综合总结,而不是单纯的论文列表。\"\n \"- 综述应该包含对研究领域的深入分析和对未来研究方向的展望。\"\n \"- 综述应该是有机结合多篇论文信息的产物,而不是孤立地介绍每篇论文。\"\n \"- 综述的语言应该适合学术交流,清晰、准确、客观。\"\n }\n ],\n \"temperature\": temperature,\n \"top_p\": top_p,\n \"max_tokens\": max_tokens,\n }\n\n res = requests.post(url, headers=header, data=json.dumps(data))\n print(res.status_code)\n print(res.json())\n print(res.json()[\"choices\"][0][\"message\"][\"content\"])\n return res.json()[\"choices\"][0][\"message\"][\"content\"]\n\n\n\ndef fox_write_arxiv(message):\n # 配置密钥与应用ID\n os.environ[\"APPBUILDER_TOKEN\"] = \"bce-v3/ALTAK-cQuNNcvY1DmVHPfPB9qpS/3706e064cd789835e398f1a5aa57f90d6657c3b9\"\n app_id = \"0dd7ed8a-f977-4ac6-a3eb-c5ec1b955c6c\"\n\n # 初始化Agent\n builder = appbuilder.AppBuilderClient(app_id)\n\n # 创建会话ID\n conversation_id = builder.create_conversation()\n\n # 执行对话\n msg = builder.run(conversation_id, query=message, stream=True)\n print(\"助手回答内容:\", msg)\n return msg\n\n\n# 定义一个简单的函数,它接受两个输入并返回一个输出\n# def process_inputs(input1, input2):\n# # 在这里处理输入,例如进行一些计算或数据操作\n# response = fox_chat_chat(input1, input2)\n# collected_messages = []\n# for idx, chunk in enumerate(response):\n# chunk_message = chunk.choices[0].delta\n# if not chunk_message.content: continue\n# collected_messages.append(chunk_message) # save the message\n# yield ''.join([m.content for m in collected_messages])\n#\n#\n# # 创建 Gradio 界面\n# iface = gr.Interface(\n# fn=process_inputs, # 指定处理函数\n# inputs=[\"text\", \"text\"], # 指定两个输入框,类型为文本\n# outputs=\"chatbot\", # 指定一个输出框,类型为文本\n# title=\"简单的输入输出界面\", # 界面的标题\n# description=\"请输入两个文本,然后查看结果\" # 界面的描述\n# )\n#\n# # 启动界面\n# iface.launch()\n"}}}}