Spaces:
Sleeping
Sleeping
Commit
·
46178b9
1
Parent(s):
11bd168
Next commit
Browse files- .DS_Store +0 -0
- api/__pycache__/stored_data.cpython-313.pyc +0 -0
- api/stored_data.py +17 -5
- logs/access.log +52 -0
- logs/app.log +14 -0
- src/genai/ideation_agent/agent.py +3 -3
- src/genai/ideation_agent/utils/nodes.py +8 -4
- src/genai/ideation_agent/utils/prompts.py +7 -8
- src/genai/ideation_agent/utils/state.py +1 -0
- src/genai/ideation_agent/utils/tools.py +1 -1
- src/genai/utils/__pycache__/models_loader.cpython-313.pyc +0 -0
- src/genai/utils/models_loader.py +3 -3
.DS_Store
CHANGED
|
Binary files a/.DS_Store and b/.DS_Store differ
|
|
|
api/__pycache__/stored_data.cpython-313.pyc
CHANGED
|
Binary files a/api/__pycache__/stored_data.cpython-313.pyc and b/api/__pycache__/stored_data.cpython-313.pyc differ
|
|
|
api/stored_data.py
CHANGED
|
@@ -1,13 +1,25 @@
|
|
| 1 |
stored_data = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
stored_data['business_details'] = {
|
| 3 |
-
"business_type": "
|
| 4 |
"platform": "Instagram, TikTok",
|
| 5 |
-
"target_audience": "
|
| 6 |
-
"business_goals": "to build a trusted
|
| 7 |
-
"offerings": "
|
| 8 |
-
"Challenges_faced": "
|
|
|
|
|
|
|
| 9 |
}
|
| 10 |
|
|
|
|
| 11 |
stored_data['human_ideation_interactions'] = []
|
| 12 |
stored_data['brainstorming_response']={}
|
| 13 |
stored_data['context_analysis_interactions']= []
|
|
|
|
| 1 |
stored_data = {}
|
| 2 |
+
# stored_data['business_details'] = {
|
| 3 |
+
# "business_type": "skin care products",
|
| 4 |
+
# "platform": "Instagram, TikTok",
|
| 5 |
+
# "target_audience": "women and men (ages 18–50) who are conscious about their skin health and beauty",
|
| 6 |
+
# "business_goals": "to build a trusted skin care brand, increase online sales, and grab the attraction of audience by making products more catchy.",
|
| 7 |
+
# "offerings": "dermatologically-tested products, personalized skin care solutions, beauty tips, and skin care routines",
|
| 8 |
+
# "Challenges_faced": "building trust in a crowded skin care market, showcasing product effectiveness, facing difficulties to create catchy marketing videos."
|
| 9 |
+
# }
|
| 10 |
+
|
| 11 |
stored_data['business_details'] = {
|
| 12 |
+
"business_type": "trekking clothes, shoes and equipment selling brand",
|
| 13 |
"platform": "Instagram, TikTok",
|
| 14 |
+
"target_audience": "adventure lovers, trekkers, hikers, and travelers (ages 18–45) who are passionate about outdoor activities.",
|
| 15 |
+
"business_goals": "to build a trusted adventure gear brand, increase product sales, and attract attention with visually striking and catchy video contents.",
|
| 16 |
+
"offerings": "durable trekking clothes, high-quality shoes, backpacks, tents, and essential trekking equipment",
|
| 17 |
+
"Challenges_faced": "standing out in a crowded outdoor gear market, proving durability and reliability of products, and creating engaging, catchy marketing videos",
|
| 18 |
+
"device_used": "only phone. (Iphone 11)",
|
| 19 |
+
"additional_details":"My budget is not so high. I want creative and feasible ideas to be captured by just mobile phone only."
|
| 20 |
}
|
| 21 |
|
| 22 |
+
|
| 23 |
stored_data['human_ideation_interactions'] = []
|
| 24 |
stored_data['brainstorming_response']={}
|
| 25 |
stored_data['context_analysis_interactions']= []
|
logs/access.log
CHANGED
|
@@ -584,3 +584,55 @@
|
|
| 584 |
2025-08-27 11:05:29,333 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 585 |
2025-08-27 11:28:14,943 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 586 |
2025-08-27 11:29:21,723 | INFO | access_logger | api/main.py:21 | Response status: 200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 584 |
2025-08-27 11:05:29,333 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 585 |
2025-08-27 11:28:14,943 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 586 |
2025-08-27 11:29:21,723 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 587 |
+
2025-08-28 22:14:29,957 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 588 |
+
2025-08-28 22:14:29,958 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 589 |
+
2025-08-28 22:14:30,386 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 590 |
+
2025-08-28 22:14:30,388 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 591 |
+
2025-08-28 22:14:37,507 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 592 |
+
2025-08-28 22:15:38,653 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 593 |
+
2025-08-28 22:17:01,706 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 594 |
+
2025-08-28 22:17:54,664 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 595 |
+
2025-08-28 22:20:44,790 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 596 |
+
2025-08-28 22:21:40,659 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 597 |
+
2025-08-28 22:23:27,918 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 598 |
+
2025-08-28 22:24:25,007 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 599 |
+
2025-08-28 22:29:38,212 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 600 |
+
2025-08-28 22:30:23,261 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 601 |
+
2025-08-28 22:31:17,880 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 602 |
+
2025-08-28 22:33:37,422 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 603 |
+
2025-08-28 22:34:32,754 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 604 |
+
2025-08-28 22:43:11,770 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 605 |
+
2025-08-28 22:43:59,107 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 606 |
+
2025-08-28 22:54:25,023 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 607 |
+
2025-08-28 22:55:13,863 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 608 |
+
2025-08-28 23:01:24,109 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 609 |
+
2025-08-28 23:02:14,676 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 610 |
+
2025-08-29 12:22:30,510 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/
|
| 611 |
+
2025-08-29 12:22:30,511 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 612 |
+
2025-08-29 12:22:30,707 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/favicon.ico
|
| 613 |
+
2025-08-29 12:22:30,707 | INFO | access_logger | api/main.py:21 | Response status: 404
|
| 614 |
+
2025-08-29 12:22:37,887 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 615 |
+
2025-08-29 12:22:37,888 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 616 |
+
2025-08-29 12:22:38,088 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 617 |
+
2025-08-29 12:22:38,091 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 618 |
+
2025-08-29 12:22:47,155 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 619 |
+
2025-08-29 12:24:10,813 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 620 |
+
2025-08-31 11:32:23,299 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 621 |
+
2025-08-31 11:32:23,300 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 622 |
+
2025-08-31 11:32:23,365 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 623 |
+
2025-08-31 11:32:23,368 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 624 |
+
2025-08-31 11:32:40,803 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 625 |
+
2025-08-31 11:37:35,636 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 626 |
+
2025-08-31 11:40:53,653 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/docs
|
| 627 |
+
2025-08-31 11:40:53,654 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 628 |
+
2025-08-31 11:40:53,728 | INFO | access_logger | api/main.py:19 | Request: GET http://127.0.0.1:8000/openapi.json
|
| 629 |
+
2025-08-31 11:40:53,730 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 630 |
+
2025-08-31 11:40:59,325 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 631 |
+
2025-08-31 11:51:09,004 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 632 |
+
2025-08-31 11:53:34,963 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 633 |
+
2025-08-31 12:40:32,614 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 634 |
+
2025-08-31 12:41:20,910 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 635 |
+
2025-08-31 12:47:22,413 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 636 |
+
2025-08-31 12:48:10,238 | INFO | access_logger | api/main.py:21 | Response status: 200
|
| 637 |
+
2025-08-31 12:53:56,732 | INFO | access_logger | api/main.py:19 | Request: POST http://127.0.0.1:8000/api/ideation
|
| 638 |
+
2025-08-31 12:54:47,885 | INFO | access_logger | api/main.py:21 | Response status: 200
|
logs/app.log
CHANGED
|
@@ -79,3 +79,17 @@
|
|
| 79 |
2025-08-27 10:41:32,280 | INFO | app_logger | api/routers/ideation.py:28 | Executed the ideation pipeline.
|
| 80 |
2025-08-27 11:04:05,117 | INFO | app_logger | api/routers/ideation.py:28 | Executed the ideation pipeline.
|
| 81 |
2025-08-27 11:29:21,721 | INFO | app_logger | api/routers/ideation.py:28 | Executed the ideation pipeline.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
2025-08-27 10:41:32,280 | INFO | app_logger | api/routers/ideation.py:28 | Executed the ideation pipeline.
|
| 80 |
2025-08-27 11:04:05,117 | INFO | app_logger | api/routers/ideation.py:28 | Executed the ideation pipeline.
|
| 81 |
2025-08-27 11:29:21,721 | INFO | app_logger | api/routers/ideation.py:28 | Executed the ideation pipeline.
|
| 82 |
+
2025-08-28 22:15:38,651 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 83 |
+
2025-08-28 22:17:54,662 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 84 |
+
2025-08-28 22:21:40,658 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 85 |
+
2025-08-28 22:24:25,007 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 86 |
+
2025-08-28 22:31:17,879 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 87 |
+
2025-08-28 22:34:32,751 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 88 |
+
2025-08-28 22:43:59,106 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 89 |
+
2025-08-28 22:55:13,862 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 90 |
+
2025-08-28 23:02:14,674 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 91 |
+
2025-08-29 12:24:10,812 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 92 |
+
2025-08-31 11:53:34,960 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 93 |
+
2025-08-31 12:41:20,909 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 94 |
+
2025-08-31 12:48:10,237 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
| 95 |
+
2025-08-31 12:54:47,884 | INFO | app_logger | api/routers/ideation.py:27 | Executed the ideation pipeline.
|
src/genai/ideation_agent/agent.py
CHANGED
|
@@ -11,7 +11,7 @@ class IdeationAgent:
|
|
| 11 |
graph_builder= StateGraph(State)
|
| 12 |
graph_builder.add_node("retriever", RetrieverNode().run)
|
| 13 |
graph_builder.add_node("ideator", IdeatorNode().run)
|
| 14 |
-
graph_builder.add_node("critic", CriticNode().run)
|
| 15 |
graph_builder.add_node("normalizer",NormalizerNode().run)
|
| 16 |
graph_builder.add_node("judge1", JudgeNode1().run)
|
| 17 |
graph_builder.add_node("judge2", JudgeNode2().run)
|
|
@@ -20,8 +20,8 @@ class IdeationAgent:
|
|
| 20 |
|
| 21 |
graph_builder.add_edge(START, "retriever")
|
| 22 |
graph_builder.add_edge("retriever", "ideator")
|
| 23 |
-
graph_builder.add_edge("ideator", "critic")
|
| 24 |
-
graph_builder.add_edge("
|
| 25 |
graph_builder.add_edge("normalizer", "judge1")
|
| 26 |
graph_builder.add_edge("normalizer","judge2")
|
| 27 |
graph_builder.add_edge("judge1", "aggregrator")
|
|
|
|
| 11 |
graph_builder= StateGraph(State)
|
| 12 |
graph_builder.add_node("retriever", RetrieverNode().run)
|
| 13 |
graph_builder.add_node("ideator", IdeatorNode().run)
|
| 14 |
+
# graph_builder.add_node("critic", CriticNode().run)
|
| 15 |
graph_builder.add_node("normalizer",NormalizerNode().run)
|
| 16 |
graph_builder.add_node("judge1", JudgeNode1().run)
|
| 17 |
graph_builder.add_node("judge2", JudgeNode2().run)
|
|
|
|
| 20 |
|
| 21 |
graph_builder.add_edge(START, "retriever")
|
| 22 |
graph_builder.add_edge("retriever", "ideator")
|
| 23 |
+
# graph_builder.add_edge("ideator", "critic")
|
| 24 |
+
graph_builder.add_edge("ideator", "normalizer")
|
| 25 |
graph_builder.add_edge("normalizer", "judge1")
|
| 26 |
graph_builder.add_edge("normalizer","judge2")
|
| 27 |
graph_builder.add_edge("judge1", "aggregrator")
|
src/genai/ideation_agent/utils/nodes.py
CHANGED
|
@@ -12,8 +12,12 @@ class RetrieverNode:
|
|
| 12 |
pass
|
| 13 |
|
| 14 |
def run(self , state:State):
|
| 15 |
-
influencers_data =
|
|
|
|
| 16 |
state.influencers_data.append(influencers_data)
|
|
|
|
|
|
|
|
|
|
| 17 |
return state
|
| 18 |
|
| 19 |
class IdeatorNode:
|
|
@@ -25,7 +29,7 @@ class IdeatorNode:
|
|
| 25 |
messages = [SystemMessage(content=template),
|
| 26 |
HumanMessage(content=f'''The business_details is\n{state.business_details[-1]}\n
|
| 27 |
The information of the image is:\n{state.image_caption[-1]}'''),]
|
| 28 |
-
# FunctionMessage(name='
|
| 29 |
response = self.llm.invoke(messages)
|
| 30 |
print('Ideator Response:', response.content)
|
| 31 |
state.ideator_response.append(str(response.content))
|
|
@@ -43,7 +47,7 @@ class CriticNode:
|
|
| 43 |
HumanMessage(content=f'''The ideas generated by ideator are:\n{state.ideator_response[-1]}\n.
|
| 44 |
The business_details is\n{state.business_details[-1]}\n
|
| 45 |
The information of the image is:\n{state.image_caption[-1]}'''),]
|
| 46 |
-
# FunctionMessage(name='
|
| 47 |
|
| 48 |
response = self.llm.invoke(messages)
|
| 49 |
state.critic_response.append(str(response.content))
|
|
@@ -56,7 +60,7 @@ class NormalizerNode:
|
|
| 56 |
self.llm = normalizer_llm
|
| 57 |
|
| 58 |
def run(self, state:State):
|
| 59 |
-
response = self.llm.with_structured_output(ideation_json_schema).invoke(str(state.
|
| 60 |
state.normalizer_response.append(response)
|
| 61 |
print('Normalizer Executed')
|
| 62 |
return state
|
|
|
|
| 12 |
pass
|
| 13 |
|
| 14 |
def run(self , state:State):
|
| 15 |
+
influencers_data = 'Nothing.'
|
| 16 |
+
# influencers_data = Retrieval(state.business_details[-1]).influencers_data()
|
| 17 |
state.influencers_data.append(influencers_data)
|
| 18 |
+
print('Retriever Node completed...')
|
| 19 |
+
# imdb_data = Retrieval(state.business_details[-1]).imdb_ideas()
|
| 20 |
+
# state.imdb_data.append(imdb_data)
|
| 21 |
return state
|
| 22 |
|
| 23 |
class IdeatorNode:
|
|
|
|
| 29 |
messages = [SystemMessage(content=template),
|
| 30 |
HumanMessage(content=f'''The business_details is\n{state.business_details[-1]}\n
|
| 31 |
The information of the image is:\n{state.image_caption[-1]}'''),]
|
| 32 |
+
# FunctionMessage(name='imdb_ideas_function', content=f'''The data of imdb movies description is:\n {state.imdb_data[-1]}\n''')]
|
| 33 |
response = self.llm.invoke(messages)
|
| 34 |
print('Ideator Response:', response.content)
|
| 35 |
state.ideator_response.append(str(response.content))
|
|
|
|
| 47 |
HumanMessage(content=f'''The ideas generated by ideator are:\n{state.ideator_response[-1]}\n.
|
| 48 |
The business_details is\n{state.business_details[-1]}\n
|
| 49 |
The information of the image is:\n{state.image_caption[-1]}'''),]
|
| 50 |
+
# FunctionMessage(name='imdb_ideas_function', content=f'''The data of imdb movies description is:\n {state.imdb_data[-1]}\n''')]
|
| 51 |
|
| 52 |
response = self.llm.invoke(messages)
|
| 53 |
state.critic_response.append(str(response.content))
|
|
|
|
| 60 |
self.llm = normalizer_llm
|
| 61 |
|
| 62 |
def run(self, state:State):
|
| 63 |
+
response = self.llm.with_structured_output(ideation_json_schema).invoke(str(state.ideator_response[-1]))
|
| 64 |
state.normalizer_response.append(response)
|
| 65 |
print('Normalizer Executed')
|
| 66 |
return state
|
src/genai/ideation_agent/utils/prompts.py
CHANGED
|
@@ -1,14 +1,13 @@
|
|
| 1 |
def ideator_prompt_v3():
|
| 2 |
return f"""
|
| 3 |
You are Ideasmith Pro, a world-class video ideator trusted by top brands to craft crisp, simple, and high-impact short-form video concepts for TikTok, Instagram, and YouTube Shorts.
|
| 4 |
-
Your task is to create exactly 8 unique and highly creative video ideas (conceptual seeds, not full scripts). Each idea should be short, clear
|
| 5 |
I am working on a project where i have to give very unique, creative and feasible video ideas for tiktok and instagram reels to the nepali business houses by understanding their business details.
|
| 6 |
The idea must have to include very unique events, surprises to make the video catchy.
|
| 7 |
|
| 8 |
|
| 9 |
You will be given:
|
| 10 |
- Business details (from the human message): Focus more strongly on device_used_to_create_videos and additional informations provided. The video is to be shoot using the provided device in the business details.
|
| 11 |
-
- Influencer data (from the function message): You can take it as a reference if it helps you.
|
| 12 |
|
| 13 |
Output Rules:
|
| 14 |
- Respond in valid JSON format only.
|
|
@@ -24,7 +23,7 @@ Output Rules:
|
|
| 24 |
Very Important Creative Guidelines:
|
| 25 |
- Each idea must be completely different in plot, theme, settings, tone, characters, events and everything.
|
| 26 |
- No repeating characters, locations, or flow patterns.
|
| 27 |
-
- Use simple, clear, and engaging language.
|
| 28 |
|
| 29 |
Here is the example of what kind of ideas i want:
|
| 30 |
The business details is:
|
|
@@ -49,14 +48,14 @@ def critic_prompt_v3():
|
|
| 49 |
return f"""
|
| 50 |
You are a precision-focused, detail-oriented video ideas critic and ideas refiner.
|
| 51 |
You’ve been assigned to critique and refine 8 video ideas created by another ideator.
|
| 52 |
-
Your job is to identify weaknesses and then improve them making more creative and unique.
|
| 53 |
The idea must have to include very unique events, surprises to make the video catchy.
|
| 54 |
I am working on a project where i have to give very unique, creative and feasible video ideas for tiktok and instagram reels to the nepali business houses by understanding their business details.
|
| 55 |
|
| 56 |
You are be provided with:
|
| 57 |
- Business details (from the human message): Focus more strongly on device_used_to_create_videos and additional informations provided. The video is to be shoot using the provided device in the business details.
|
| 58 |
- Ideas generated by the ideator (from the human message)
|
| 59 |
-
|
| 60 |
|
| 61 |
Your Job:
|
| 62 |
1. Identify collective flaws across the 8 original ideas — e.g., uncreative, lacking uniqueness, repetition, weak hooks, confusing flow, poor tie-in to business, lack of diversity, or unclear USP.
|
|
@@ -67,13 +66,13 @@ Your Job:
|
|
| 67 |
- usp → The unique selling proposition tied to the business
|
| 68 |
- niche → The specific target audience or market segment most likely to resonate with the video.
|
| 69 |
|
| 70 |
-
3.
|
| 71 |
-
4.
|
| 72 |
|
| 73 |
Very Important Creative Guidelines:
|
| 74 |
- Each idea must be completely different in plot, theme, setting, and tone, characters , events etc.
|
| 75 |
- Avoid repeating characters, hooks, settings, or storylines across the 8 ideas.
|
| 76 |
-
- Use simple, clear, and engaging language.
|
| 77 |
|
| 78 |
Here is the example of what kind of ideas i want:
|
| 79 |
The business details is:
|
|
|
|
| 1 |
def ideator_prompt_v3():
|
| 2 |
return f"""
|
| 3 |
You are Ideasmith Pro, a world-class video ideator trusted by top brands to craft crisp, simple, and high-impact short-form video concepts for TikTok, Instagram, and YouTube Shorts.
|
| 4 |
+
Your task is to create exactly 8 unique and highly creative video ideas (conceptual seeds, not full scripts). Each idea should be short, clear and visually vivid.
|
| 5 |
I am working on a project where i have to give very unique, creative and feasible video ideas for tiktok and instagram reels to the nepali business houses by understanding their business details.
|
| 6 |
The idea must have to include very unique events, surprises to make the video catchy.
|
| 7 |
|
| 8 |
|
| 9 |
You will be given:
|
| 10 |
- Business details (from the human message): Focus more strongly on device_used_to_create_videos and additional informations provided. The video is to be shoot using the provided device in the business details.
|
|
|
|
| 11 |
|
| 12 |
Output Rules:
|
| 13 |
- Respond in valid JSON format only.
|
|
|
|
| 23 |
Very Important Creative Guidelines:
|
| 24 |
- Each idea must be completely different in plot, theme, settings, tone, characters, events and everything.
|
| 25 |
- No repeating characters, locations, or flow patterns.
|
| 26 |
+
- Use simple, clear, and engaging language. The ideas will be used by person who are average in english proficiency.
|
| 27 |
|
| 28 |
Here is the example of what kind of ideas i want:
|
| 29 |
The business details is:
|
|
|
|
| 48 |
return f"""
|
| 49 |
You are a precision-focused, detail-oriented video ideas critic and ideas refiner.
|
| 50 |
You’ve been assigned to critique and refine 8 video ideas created by another ideator.
|
| 51 |
+
Your job is to identify ideas' weaknesses(if any) and then improve them making more creative and unique.
|
| 52 |
The idea must have to include very unique events, surprises to make the video catchy.
|
| 53 |
I am working on a project where i have to give very unique, creative and feasible video ideas for tiktok and instagram reels to the nepali business houses by understanding their business details.
|
| 54 |
|
| 55 |
You are be provided with:
|
| 56 |
- Business details (from the human message): Focus more strongly on device_used_to_create_videos and additional informations provided. The video is to be shoot using the provided device in the business details.
|
| 57 |
- Ideas generated by the ideator (from the human message)
|
| 58 |
+
|
| 59 |
|
| 60 |
Your Job:
|
| 61 |
1. Identify collective flaws across the 8 original ideas — e.g., uncreative, lacking uniqueness, repetition, weak hooks, confusing flow, poor tie-in to business, lack of diversity, or unclear USP.
|
|
|
|
| 66 |
- usp → The unique selling proposition tied to the business
|
| 67 |
- niche → The specific target audience or market segment most likely to resonate with the video.
|
| 68 |
|
| 69 |
+
3. Change only those ideas whinch needs proper refinements. If the idea is already unique and creative enough, you don't have to change it. Don't act too strict.
|
| 70 |
+
4. Use simple, clear, and engaging language. The ideas will be used by person who are average in english proficiency.
|
| 71 |
|
| 72 |
Very Important Creative Guidelines:
|
| 73 |
- Each idea must be completely different in plot, theme, setting, and tone, characters , events etc.
|
| 74 |
- Avoid repeating characters, hooks, settings, or storylines across the 8 ideas.
|
| 75 |
+
- Use simple, clear, and engaging language. The ideas will be used by person who are average in english proficiency.
|
| 76 |
|
| 77 |
Here is the example of what kind of ideas i want:
|
| 78 |
The business details is:
|
src/genai/ideation_agent/utils/state.py
CHANGED
|
@@ -6,6 +6,7 @@ from typing import Annotated
|
|
| 6 |
class State(BaseModel):
|
| 7 |
business_details : Annotated[list[dict],operator.add] = []
|
| 8 |
influencers_data : Annotated[list[str],operator.add] = []
|
|
|
|
| 9 |
ideator_response: Annotated[list[str],operator.add] = []
|
| 10 |
critic_response: Annotated[list[str],operator.add] = []
|
| 11 |
normalizer_response : Annotated[list[dict],operator.add] = []
|
|
|
|
| 6 |
class State(BaseModel):
|
| 7 |
business_details : Annotated[list[dict],operator.add] = []
|
| 8 |
influencers_data : Annotated[list[str],operator.add] = []
|
| 9 |
+
imdb_data : Annotated[list[str],operator.add] = []
|
| 10 |
ideator_response: Annotated[list[str],operator.add] = []
|
| 11 |
critic_response: Annotated[list[str],operator.add] = []
|
| 12 |
normalizer_response : Annotated[list[dict],operator.add] = []
|
src/genai/ideation_agent/utils/tools.py
CHANGED
|
@@ -54,7 +54,7 @@ class Retrieval:
|
|
| 54 |
return encoding.decode(trimmed_response)
|
| 55 |
|
| 56 |
def imdb_ideas(self):
|
| 57 |
-
top_k =
|
| 58 |
distances, indices = ideas_index.search(self.query_embedding, top_k)
|
| 59 |
|
| 60 |
outer_list = []
|
|
|
|
| 54 |
return encoding.decode(trimmed_response)
|
| 55 |
|
| 56 |
def imdb_ideas(self):
|
| 57 |
+
top_k = 4
|
| 58 |
distances, indices = ideas_index.search(self.query_embedding, top_k)
|
| 59 |
|
| 60 |
outer_list = []
|
src/genai/utils/__pycache__/models_loader.cpython-313.pyc
CHANGED
|
Binary files a/src/genai/utils/__pycache__/models_loader.cpython-313.pyc and b/src/genai/utils/__pycache__/models_loader.cpython-313.pyc differ
|
|
|
src/genai/utils/models_loader.py
CHANGED
|
@@ -18,13 +18,13 @@ llm_anthropic = ChatAnthropic(model='claude-3-7-sonnet-latest', temperature=1)
|
|
| 18 |
llm_gemini = ChatGoogleGenerativeAI(model="gemini-1.5-flash")
|
| 19 |
llm_groq = ChatGroq(model="llama-3.1-8b-instant",temperature=0.7)
|
| 20 |
llm_gpt = ChatOpenAI(model="gpt-4o-mini",temperature=0.3)
|
| 21 |
-
llm_gpt_high = ChatOpenAI(model="gpt-
|
| 22 |
|
| 23 |
captioning_model = "meta-llama/llama-4-scout-17b-16e-instruct"
|
| 24 |
image_generation_model = "black-forest-labs/FLUX.1-schnell"
|
| 25 |
|
| 26 |
-
ideator_llm =
|
| 27 |
-
critic_llm =
|
| 28 |
normalizer_llm = llm_gpt
|
| 29 |
validator_llm = llm_gpt
|
| 30 |
judge1_llm = llm_gpt
|
|
|
|
| 18 |
llm_gemini = ChatGoogleGenerativeAI(model="gemini-1.5-flash")
|
| 19 |
llm_groq = ChatGroq(model="llama-3.1-8b-instant",temperature=0.7)
|
| 20 |
llm_gpt = ChatOpenAI(model="gpt-4o-mini",temperature=0.3)
|
| 21 |
+
llm_gpt_high = ChatOpenAI(model="gpt-5-nano",temperature=0.5)
|
| 22 |
|
| 23 |
captioning_model = "meta-llama/llama-4-scout-17b-16e-instruct"
|
| 24 |
image_generation_model = "black-forest-labs/FLUX.1-schnell"
|
| 25 |
|
| 26 |
+
ideator_llm = llm_gpt_high
|
| 27 |
+
critic_llm = llm_gpt_high
|
| 28 |
normalizer_llm = llm_gpt
|
| 29 |
validator_llm = llm_gpt
|
| 30 |
judge1_llm = llm_gpt
|