simonou99 commited on
Commit
1615544
·
verified ·
1 Parent(s): a5127e8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -13
app.py CHANGED
@@ -4,8 +4,6 @@ import gradio as gr
4
  from zhipuai import ZhipuAI
5
  import json
6
 
7
- api_key = os.environ['ZHIPUAI_API_KEY']
8
-
9
  def convert_to_openai_format(nested_chat):
10
  openai_format = []
11
  for dialogue in nested_chat:
@@ -14,7 +12,7 @@ def convert_to_openai_format(nested_chat):
14
  openai_format.extend([user_dialogue, assistant_dialogue])
15
  return openai_format
16
 
17
- def master_llm(user_prompt, history):
18
  # 生成针对专家LLM的系统提示
19
  # 示例: 根据用户提问生成一个简单的系统提示
20
  if history != []:
@@ -36,13 +34,14 @@ def master_llm(user_prompt, history):
36
 
37
  参数解释:
38
  temperature为AI回复时的随机程度,值越小意味着回答逻辑越发散。取值为(0,1),但不能等于0或1。
39
- top_p为AI会考虑的候选采样范围,比如0.1指只会选择前10%推荐的候选token。取值为(0,1),但不能等于0或1。
40
- 行业内,一般来说如果需要创意类型的AI,就会让这两个参数的值高一些,如果需要严格服从型的AI,则需要temperature尽量低一点。
 
41
 
42
- 注意,请不要刻意生成专家,如果无法判断需要什么领域的专家(比如无上下文),则直接回复此默认设定:
43
  ```
44
  {{
45
- "expert_system_prompt":"根据用户的提问与需求(如有上下文,请根据上下文),返回合适的回应。",
46
  "temperature":"0.5",
47
  "top_p":"0.5"
48
  }}
@@ -71,7 +70,7 @@ top_p为AI会考虑的候选采样范围,比如0.1指只会选择前10%推荐
71
 
72
  return expert_system_prompt, temperature, top_p
73
 
74
- def expert_llm(user_prompt, history, expert_system_prompt, temperature, top_p):
75
  client = ZhipuAI(api_key=api_key)
76
  if history != []:
77
  prompt_records = convert_to_openai_format(history)
@@ -87,12 +86,14 @@ def expert_llm(user_prompt, history, expert_system_prompt, temperature, top_p):
87
  )
88
  return response.choices[0].message.content
89
 
90
- def gradio_fn(message, history):
91
- expert_system_prompt, temperature, top_p = master_llm(message, history)
92
- expert_response = expert_llm(message, history, expert_system_prompt, temperature, top_p)
93
  return expert_response
94
 
95
- demo = gr.ChatInterface(fn=gradio_fn)
 
 
96
 
97
  if __name__ == "__main__":
98
- demo.launch()
 
4
  from zhipuai import ZhipuAI
5
  import json
6
 
 
 
7
  def convert_to_openai_format(nested_chat):
8
  openai_format = []
9
  for dialogue in nested_chat:
 
12
  openai_format.extend([user_dialogue, assistant_dialogue])
13
  return openai_format
14
 
15
+ def master_llm(user_prompt, history, api_key):
16
  # 生成针对专家LLM的系统提示
17
  # 示例: 根据用户提问生成一个简单的系统提示
18
  if history != []:
 
34
 
35
  参数解释:
36
  temperature为AI回复时的随机程度,值越小意味着回答逻辑越发散。取值为(0,1),但不能等于0或1。
37
+ top_p为AI会考虑的回复候选采样范围,比如0.1指只会选择前10%最佳的候选回复项。取值为(0,1),但不能等于0或1。
38
+ 技巧:一般来说如果需要创意类型的AI,就会让这两个参数的值高一些;
39
+ 如果需要严格服从型的AI,则需要temperature与top_p尽量低一点;
40
 
41
+ 注意,请不要刻意生成专家,如果无法判断需要什么领域的专家(比如无上下文,用户乱问乱答),则直接回复此默认设定:
42
  ```
43
  {{
44
+ "expert_system_prompt":"根据用户的发送的信息(如有上下文,请根据上下文),合适地回应用户。",
45
  "temperature":"0.5",
46
  "top_p":"0.5"
47
  }}
 
70
 
71
  return expert_system_prompt, temperature, top_p
72
 
73
+ def expert_llm(user_prompt, history, expert_system_prompt, temperature, top_p, api_key):
74
  client = ZhipuAI(api_key=api_key)
75
  if history != []:
76
  prompt_records = convert_to_openai_format(history)
 
86
  )
87
  return response.choices[0].message.content
88
 
89
+ def gradio_fn(message, history, api_key):
90
+ expert_system_prompt, temperature, top_p = master_llm(message, history, api_key)
91
+ expert_response = expert_llm(message, history, expert_system_prompt, temperature, top_p, api_key)
92
  return expert_response
93
 
94
+ with gr.Blocks() as demo:
95
+ api_key = gr.Textbox()
96
+ main_interface = gr.ChatInterface(fn=gradio_fn, additional_inputs=api_key)
97
 
98
  if __name__ == "__main__":
99
+ demo.launch(show_error=True)