Commit
·
1dfa162
1
Parent(s):
b100535
add Application file
Browse files- app.py +103 -0
- 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
|