Sebbe33 commited on
Commit
16b1c7a
·
verified ·
1 Parent(s): 17ae52f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -16
app.py CHANGED
@@ -2,21 +2,33 @@ import streamlit as st
2
  from streamlit_markmap import markmap
3
  from langchain.llms import OpenAI
4
  from langchain.prompts import PromptTemplate
 
 
5
 
6
 
7
- # Sidebar: Eingabe des OpenAI API Keys
8
- st.sidebar.header("Einstellungen")
9
- api_key = st.sidebar.text_input("OpenAI API Key", type="password")
10
-
 
 
 
 
 
 
11
 
12
  # Streamlit-Konfiguration
13
  st.set_page_config(page_title="Mindmap Generator", layout="wide")
14
  st.title("Mindmap Ideen-Generator mit LangChain und OpenAI")
15
 
 
 
 
 
 
16
  # Texteingabe für den Brainstorming-Prompt
17
- user_prompt = st.text_area(
18
- "Thema",
19
- "Gib hier ein Thema ein, zu dem aus verschiedenen Perspektiven Ideen generiert werden sollen..."
20
  )
21
 
22
  # Button, um die Generierung zu starten
@@ -33,7 +45,8 @@ if st.button("Generiere Mindmap"):
33
  Generiere aus fünf Perspektiven mindestens jeweils zehn Ideen.
34
 
35
  Erstelle bitte eine Mindmap im Markdown-Format (Markmap), in der die Hauptideen und Unterideen hierarchisch strukturiert sind.
36
- Nutze folgendes Format und gib nur das RAW aus:
 
37
  # Hauptidee
38
  ## Unteridee 1
39
  ## Unteridee 2
@@ -42,16 +55,23 @@ if st.button("Generiere Mindmap"):
42
  prompt = PromptTemplate(template=template, input_variables=["topic"])
43
  full_prompt = prompt.format(topic=user_prompt)
44
 
45
- # OpenAI LLM initialisieren (ggf. Umgebungsvariablen wie OPENAI_API_KEY setzen)
46
- llm = OpenAI(model_name="gpt-4o", temperature=0.7, max_tokens=50000, openai_api_key=api_key)
47
-
 
 
 
 
48
 
 
49
  # Anfrage an das LLM senden
50
- mindmap_markdown = llm(full_prompt)
51
-
 
52
  # Ausgabe der generierten Mindmap
53
- st.markdown("## Generierte Mindmap (Markdown):")
54
- st.code(mindmap_markdown, language="markdown")
 
55
 
56
  # Darstellung der Mindmap mit streamlit_markmap
57
- markmap(mindmap_markdown, height=600)
 
2
  from streamlit_markmap import markmap
3
  from langchain.llms import OpenAI
4
  from langchain.prompts import PromptTemplate
5
+ import os
6
+ from langchain_openai import ChatOpenAI
7
 
8
 
9
+ def remove_markdown_fences(text: str) -> str:
10
+ # Entferne führende Code-Fence (entweder "```markdown" oder "```")
11
+ if text.startswith("```markdown"):
12
+ text = text[len("```markdown"):].strip()
13
+ elif text.startswith("```"):
14
+ text = text[len("```"):].strip()
15
+ # Entferne abschließende Code-Fence "```", falls vorhanden
16
+ if text.endswith("```"):
17
+ text = text[:-3].strip()
18
+ return text
19
 
20
  # Streamlit-Konfiguration
21
  st.set_page_config(page_title="Mindmap Generator", layout="wide")
22
  st.title("Mindmap Ideen-Generator mit LangChain und OpenAI")
23
 
24
+ # Sidebar: Eingabe des OpenAI API Keys
25
+ st.sidebar.header("Einstellungen")
26
+ api_key = st.sidebar.text_input("OpenAI API Key", type="password")
27
+ os.environ['OPENAI_API_KEY'] = api_key
28
+
29
  # Texteingabe für den Brainstorming-Prompt
30
+ user_prompt = st.text_input(
31
+ "Thema"
 
32
  )
33
 
34
  # Button, um die Generierung zu starten
 
45
  Generiere aus fünf Perspektiven mindestens jeweils zehn Ideen.
46
 
47
  Erstelle bitte eine Mindmap im Markdown-Format (Markmap), in der die Hauptideen und Unterideen hierarchisch strukturiert sind.
48
+
49
+ Nutze folgendes Format:
50
  # Hauptidee
51
  ## Unteridee 1
52
  ## Unteridee 2
 
55
  prompt = PromptTemplate(template=template, input_variables=["topic"])
56
  full_prompt = prompt.format(topic=user_prompt)
57
 
58
+ llm = ChatOpenAI(
59
+ model="gpt-4o",
60
+ temperature=0,
61
+ max_tokens=None,
62
+ timeout=None,
63
+ max_retries=2
64
+ )
65
 
66
+ response = llm.invoke(full_prompt)
67
  # Anfrage an das LLM senden
68
+ mindmap_markdown = response.content
69
+ mindmap_markdown = remove_markdown_fences(mindmap_markdown)
70
+
71
  # Ausgabe der generierten Mindmap
72
+ with st.expander("See explanation"):
73
+ st.markdown("## Generierte Mindmap (Markdown):")
74
+ st.code(mindmap_markdown, language="markdown")
75
 
76
  # Darstellung der Mindmap mit streamlit_markmap
77
+ markmap(mindmap_markdown, height=800)