score / app.py
zhuguangbin86's picture
json_format
b1226bf
raw
history blame contribute delete
No virus
4.84 kB
import gradio as gr
import openai
from openai import OpenAI
import requests
import time
import os, io, json
import logging
# 配置日志记录器
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s:%(message)s",
handlers=[
logging.FileHandler("debug.log"), # 将日志输出到文件
logging.StreamHandler(), # 同时在控制台输出
],
)
# Set your OpenAI API key here
api_key = os.environ.get('OPENAI_API_KEY')
api_base = os.environ.get('OPENAI_API_BASE')
client = OpenAI(api_key=api_key, base_url=api_base)
history = []
def predict(message, history, system_prompt):
history_openai_format = []
history_openai_format.append({"role": "system", "content": system_prompt})
for human, assistant in history:
history_openai_format.append({"role": "user", "content": human })
history_openai_format.append({"role": "assistant", "content":assistant})
history_openai_format.append({"role": "user", "content": message})
response = client.chat.completions.create(
model='gpt-4-1106-preview',
messages= history_openai_format,
response_format={ "type": "json_object" },
stream=True
)
partial_message = ""
for chunk in response:
if chunk.choices[0].delta.content and len(chunk.choices[0].delta.content) != 0:
partial_message = partial_message + chunk.choices[0].delta.content
yield partial_message
system_prompt = """
基于给出的梦境描述和梦的解析,按照以下评分系统,每个维度分配相应的分数,然后将这些分数加总以得出最终得分,总分10分:
梦境描述评分(0-4分):
1. 易读性(0-1分):
- 0分: 描述晦涩难懂,读者难以理解梦境内容。
- 0.5分: 描述基本清晰,但在某些地方可能需要进一步的阐释以便读者理解。
- 1分: 描述通俗易懂,读者能轻松理解梦境内容。
2. 完整性(0-1分):
- 0分: 描述片段化,缺乏连贯性,留下许多未解之谜。
- 0.5分: 描述大体完整,但可能缺少某些关键信息。
- 1分: 描述完整,提供了一个连贯的梦境故事线。
3. 故事性(0-1分):
- 0分: 梦境缺乏明显的叙事结构,难以把握故事线。
- 0.5分: 梦境有一定的叙事结构,但故事发展不够丰富或深入。
- 1分: 梦境具有强烈的叙事结构,故事性强,有明显的起伏和高潮。
4. 趣味性(0-1分):
- 0分: 梦境内容平淡无奇,缺乏吸引力。
- 0.5分: 梦境内容有一定趣味性,但未能充分吸引读者的注意。
- 1分: 梦境内容引人入胜,具有较高的趣味性和吸引力。
解析的启发性和洞察力(0-4分)
1. 提供新视角(0-1分):
- 0分: 解析提供了常见或广泛接受的解释,没有提供新的观点。
- 0.5分: 解析提出了稍微不同于常规的观点,但不足以让人眼前一亮。
- 1分: 解析提供了一个独特的解释,这个解释不仅与众不同,而且为梦境提供了全新的理解角度。
2. 挑战日常认知(0-1分):
- 0分: 解析遵循了传统的思维模式,没有挑战读者的认知。
- 0.5分: 解析在一定程度上提出了对传统认知的质疑,但挑战不够强烈或深刻。
- 1分: 解析显著地颠覆了常规理解,提出了深刻的、可能改变读者看待梦境的方式的观点。
3. 深层次个人洞察(0-1分):
- 0分: 解析没有或几乎没有探讨梦者的个人心理状态。
- 0.5分: 解析提到了梦者可能的心理状态,但没有深入挖掘其背后的意义或影响。
- 1分: 解析深入探讨了梦者的个人心理状态,提供了对梦者个人经历或情感的深刻见解。
4. 指导性启发(0-1分):
- 0分: 解析没有提供引导性的洞察或启发性的建议。
- 0.5分: 解析提供了一些启发,但没有很强的引导性,未能明显触发“啊哈”时刻。
- 1分: 解析不仅提供了深刻的洞察,而且具有强烈的指导性,能够清晰地引导梦者产生深刻的认识和反思。
解析与个人的相关性(0-2分)
个人情感关联(1分): 如果解析触及了梦者可能的情感状态。
生活状况关联(1分): 如果解析指出梦境可能与梦者最近的生活变化有关。
请最终用json结果输出, 格式如下:
{"score": 8.5, "": "score_criteria": "xxxxx"}
field"score": 评分的数值
field"score_criteria": 评分的判断标
"""
iface = gr.ChatInterface(predict,
additional_inputs=[
gr.Textbox(system_prompt, label="System Prompt")
]
)
# 启动Gradio应用程序
iface.launch()