zhuguangbin86 commited on
Commit
1dfa162
1 Parent(s): b100535

add Application file

Browse files
Files changed (2) hide show
  1. app.py +103 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import openai
3
+ from openai import OpenAI
4
+
5
+ import requests
6
+ import time
7
+ import os, io, json
8
+
9
+ import logging
10
+
11
+
12
+ # 配置日志记录器
13
+ logging.basicConfig(
14
+ level=logging.INFO,
15
+ format="%(asctime)s %(levelname)s:%(message)s",
16
+ handlers=[
17
+ logging.FileHandler("debug.log"), # 将日志输出到文件
18
+ logging.StreamHandler(), # 同时在控制台输出
19
+ ],
20
+ )
21
+
22
+ # Set your OpenAI API key here
23
+ api_key = os.environ.get('OPENAI_API_KEY')
24
+ api_base = os.environ.get('OPENAI_API_BASE')
25
+ client = OpenAI(api_key=api_key, base_url=api_base)
26
+
27
+ history = []
28
+
29
+ def predict(message, history, system_prompt):
30
+ history_openai_format = []
31
+ history_openai_format.append({"role": "system", "content": system_prompt})
32
+ for human, assistant in history:
33
+ history_openai_format.append({"role": "user", "content": human })
34
+ history_openai_format.append({"role": "assistant", "content":assistant})
35
+ history_openai_format.append({"role": "user", "content": message})
36
+
37
+ response = client.chat.completions.create(
38
+ model='gpt-4-1106-preview',
39
+ messages= history_openai_format,
40
+ stream=True
41
+ )
42
+
43
+ partial_message = ""
44
+ for chunk in response:
45
+ if chunk.choices[0].delta.content and len(chunk.choices[0].delta.content) != 0:
46
+ partial_message = partial_message + chunk.choices[0].delta.content
47
+ yield partial_message
48
+
49
+ system_prompt = """
50
+
51
+ 基于给出的梦境描述和梦的解析,按照以下评分系统,每个维度分配相应的分数,然后将这些分数加总以得出最终得分,总分10分:
52
+ 梦境描述评分(0-4分):
53
+ 1. 易读性(0-1分):
54
+ - 0分: 描述晦涩难懂,读者难以理解梦境内容。
55
+ - 0.5分: 描述基本清晰,但在某些地方可能需要进一步的阐释以便读者理解。
56
+ - 1分: 描述通俗易懂,读者能轻松理解梦境内容。
57
+ 2. 完整性(0-1分):
58
+ - 0分: 描述片段化,缺乏连贯性,留下许多未解之谜。
59
+ - 0.5分: 描述大体完整,但可能缺少某些关键信息。
60
+ - 1分: 描述完整,提供了一个连贯的梦境故事线。
61
+ 3. 故事性(0-1分):
62
+ - 0分: 梦境缺乏明显的叙事结构,难以把握故事线。
63
+ - 0.5分: 梦境有一定的叙事结构,但故事发展不够丰富或深入。
64
+ - 1分: 梦境具有强烈的叙事结构,故事性强,有明显的起伏和高潮。
65
+ 4. 趣味性(0-1分):
66
+ - 0分: 梦境内容平淡无奇,缺乏吸引力。
67
+ - 0.5分: 梦境内容有一定趣味性,但未能充分吸引读者的注意。
68
+ - 1分: 梦境内容引人入胜,具有较高的趣味性和吸引力。
69
+ 解析的启发性和洞察力(0-4分)
70
+ 1. 提供新视角(0-1分):
71
+ - 0分: 解析提供了常见或广泛接受的解释,没有提供新的观点。
72
+ - 0.5分: 解析提出了稍微不同于常规的观点,但不足以让人眼前一亮。
73
+ - 1分: 解析提供了一个独特的解释,这个解释不仅与众不同,而且为梦境提供了全新的理解角度。
74
+ 2. 挑战日常认知(0-1分):
75
+ - 0分: 解析遵循了传统的思维模式,没有挑战读者的认知。
76
+ - 0.5分: 解析在一定程度上提出了对传统认知的质疑,但挑战不够强烈或深刻。
77
+ - 1分: 解析显著地颠覆了常规理解,提出了深刻的、可能改变读者看待梦境的方式的观点。
78
+ 3. 深层次个人洞察(0-1分):
79
+ - 0分: 解析没有或几乎没有探讨梦者的个人心理状态。
80
+ - 0.5分: 解析提到了梦者可能的心理状态,但没有深入挖掘其背后的意义或影响。
81
+ - 1分: 解析深入探讨了梦者的个人心理状态,提供了对梦者个人经历或情感的深刻见解。
82
+ 4. 指导性启发(0-1分):
83
+ - 0分: 解析没有提供引导性的洞察或启发性的建议。
84
+ - 0.5分: 解析提供了一些启发,但没有很强的引导性,未能明显触发“啊哈”时刻。
85
+ - 1分: 解析不仅提供了深刻的洞察,而且具有强烈的指导性,能够清晰地引导梦者产生深刻的认识和反思。
86
+ 解析与个人的相关性(0-2分)
87
+ 个人情感关联(1分): 如果解析触及了梦者可能的情感状态。
88
+ 生活状况关联(1分): 如果解析指出梦境可能与梦者最近的生活变化有关。
89
+
90
+ 请最终用json结果输出, 格式如下:
91
+ {"score": 8.5, "": "score_criteria": "xxxxx"}
92
+
93
+ field"score": 评分的数值
94
+ field"score_criteria": 评分的判断标
95
+ """
96
+ iface = gr.ChatInterface(predict,
97
+ additional_inputs=[
98
+ gr.Textbox(system_prompt, label="System Prompt")
99
+ ]
100
+ )
101
+
102
+ # 启动Gradio应用程序
103
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio==4.3.0
2
+ openai==1.2.4
3
+ requests==2.31.0
4
+ Pillow==10.0.1