JARVISXIRONMAN commited on
Commit
76e3b7a
Β·
verified Β·
1 Parent(s): fa82a41

Create components/plan_generator.py

Browse files
Files changed (1) hide show
  1. components/plan_generator.py +28 -24
components/plan_generator.py CHANGED
@@ -1,37 +1,41 @@
1
  # components/plan_generator.py
2
 
3
  import streamlit as st
 
 
4
  from langchain_groq import ChatGroq
5
- from langchain.prompts import ChatPromptTemplate
6
- from langchain_core.output_parsers import StrOutputParser
7
- import os
8
  from utils.prompts import STRATEGY_PROMPT
9
  from utils.helpers import generate_pdf
10
 
 
11
  def run_plan_generator():
12
- st.header("πŸ“‘ Business Plan & Pitch Generator")
13
 
14
- if "bmc_answers" not in st.session_state:
15
- st.warning("⚠️ Please complete the Canvas Assistant first.")
 
16
  return
17
 
18
- st.markdown("Generating plan using your Business Model Canvas answers...")
 
 
 
 
19
 
20
- with st.spinner("Thinking like a startup advisor..."):
21
- llm = ChatGroq(
22
- temperature=0.3,
23
- model_name="llama3-70b-8192",
24
- groq_api_key=os.getenv("GROQ_API_KEY")
25
  )
26
-
27
- prompt = ChatPromptTemplate.from_template(STRATEGY_PROMPT)
28
- chain = prompt | llm | StrOutputParser()
29
-
30
- full_plan = chain.invoke({"input": st.session_state.bmc_answers})
31
-
32
- st.subheader("πŸ“˜ Business Plan")
33
- st.write(full_plan)
34
-
35
- if st.button("πŸ“€ Export as PDF"):
36
- generate_pdf("business_plan", full_plan)
37
- st.success("βœ… PDF Exported Successfully!")
 
1
  # components/plan_generator.py
2
 
3
  import streamlit as st
4
+ from langchain_core.prompts import ChatPromptTemplate
5
+ from langchain_core.runnables import Runnable
6
  from langchain_groq import ChatGroq
7
+ from utils.session import get_canvas_data
 
 
8
  from utils.prompts import STRATEGY_PROMPT
9
  from utils.helpers import generate_pdf
10
 
11
+
12
  def run_plan_generator():
13
+ st.header("πŸ“‘ Auto Plan Generator")
14
 
15
+ canvas = get_canvas_data()
16
+ if not canvas:
17
+ st.warning("Please complete the Canvas Assistant first.")
18
  return
19
 
20
+ # Display Canvas Summary
21
+ st.subheader("🧾 Your Canvas Summary")
22
+ for section, content in canvas.items():
23
+ st.markdown(f"**{section}**")
24
+ st.info(content)
25
 
26
+ with st.spinner("Generating business plan..."):
27
+ prompt = ChatPromptTemplate.from_template(
28
+ STRATEGY_PROMPT + "\n\nCanvas Data:\n{input}"
 
 
29
  )
30
+ chain: Runnable = prompt | ChatGroq(model="llama3-8b-8192", temperature=0.4)
31
+ full_canvas_text = "\n".join([f"{k}: {v}" for k, v in canvas.items()])
32
+ result = chain.invoke({"input": full_canvas_text})
33
+
34
+ st.subheader("πŸ“„ Generated Business Plan")
35
+ st.success(result.content)
36
+
37
+ # Allow download
38
+ pdf_path = generate_pdf(result.content , content)
39
+ with open(pdf_path, "rb") as f:
40
+ st.download_button("πŸ“₯ Download as PDF", f, file_name="Business_Plan.pdf")
41
+