matteopilotto commited on
Commit
fef789d
·
1 Parent(s): 53dfc01
Files changed (2) hide show
  1. app.py +1 -34
  2. utils.py +36 -0
app.py CHANGED
@@ -1,43 +1,10 @@
1
  import os
2
- import random
3
- import time
4
- from langchain.schema.messages import HumanMessage, SystemMessage
5
  import pinecone
6
  from langchain.vectorstores import Pinecone
7
  from langchain.embeddings.openai import OpenAIEmbeddings
8
  from langchain.chat_models import ChatOpenAI
9
  import gradio as gr
10
-
11
- def retrieve_knowledge(query, k=10, randomize=True):
12
- knowledge = [d.page_content.strip() for d in vectorstore.similarity_search(query, k=k)]
13
-
14
- if randomize:
15
- knowledge = random.sample(knowledge, k)
16
-
17
- knowledge = "\n\n\n".join(knowledge)
18
-
19
- return knowledge
20
-
21
-
22
- def generate_workout(query, knowledge):
23
- messages = [
24
- SystemMessage(content=system_prompt.format(workout_context=knowledge)),
25
- HumanMessage(content=query)
26
- ]
27
-
28
- response = llm.invoke(messages).content.strip()
29
-
30
- return response
31
-
32
-
33
- def run(gender, muscle_group, equipment, level, duration, k=5, randomize=True):
34
- query = f"{duration}-minute {muscle_group} workout for {gender} {level} level {equipment}"
35
- knowledge = retrieve_knowledge(query, k, randomize)
36
- response = generate_workout(query, knowledge)
37
-
38
- for i in range(len(response)):
39
- time.sleep(0.01)
40
- yield response[:i+1]
41
 
42
 
43
  # embedding model
 
1
  import os
 
 
 
2
  import pinecone
3
  from langchain.vectorstores import Pinecone
4
  from langchain.embeddings.openai import OpenAIEmbeddings
5
  from langchain.chat_models import ChatOpenAI
6
  import gradio as gr
7
+ from utils import *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
 
10
  # embedding model
utils.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import random
3
+ import time
4
+ from langchain.schema.messages import HumanMessage, SystemMessage
5
+
6
+
7
+ def retrieve_knowledge(query, k=10, randomize=True):
8
+ knowledge = [d.page_content.strip() for d in vectorstore.similarity_search(query, k=k)]
9
+
10
+ if randomize:
11
+ knowledge = random.sample(knowledge, k)
12
+
13
+ knowledge = "\n\n\n".join(knowledge)
14
+
15
+ return knowledge
16
+
17
+
18
+ def generate_workout(query, knowledge):
19
+ messages = [
20
+ SystemMessage(content=system_prompt.format(workout_context=knowledge)),
21
+ HumanMessage(content=query)
22
+ ]
23
+
24
+ response = llm.invoke(messages).content.strip()
25
+
26
+ return response
27
+
28
+
29
+ def run(gender, muscle_group, equipment, level, duration, k=5, randomize=True):
30
+ query = f"{duration}-minute {muscle_group} workout for {gender} {level} level {equipment}"
31
+ knowledge = retrieve_knowledge(query, k, randomize)
32
+ response = generate_workout(query, knowledge)
33
+
34
+ for i in range(len(response)):
35
+ time.sleep(0.01)
36
+ yield response[:i+1]