Spaces:
Sleeping
Sleeping
File size: 5,405 Bytes
f757ba6 6eed986 f757ba6 be4bfb2 f757ba6 759db80 f757ba6 6eed986 9c27a34 6eed986 9c27a34 6eed986 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
import os
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
class GeminiLLM():
def __init__(self):
self.ACCESS_TOKEN = os.getenv('GOOGLE_GEMINI_TOKEN')
self.model_name = "gemini-pro"
def getEmbeddingsModel(self):
self.embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
return self.embeddings
def getRetriver(self, documents ):
vectorstore = Chroma.from_documents(
documents = documents,
embedding = self.embeddings,
persist_directory = "chroma_db_dir", # Local mode with in-memory storage only
collection_name="sermon_lab_ai"
)
retriever = vectorstore.as_retriever(
search_kwargs={"k": 3}
)
return (retriever, vectorstore)
def getLLM(self ):
if os.getenv('GOOGLE_GEMINI_TOKEN') is None:
raise ValueError("GOOGLE_GEMINI_TOKEN environment variable not set")
else:
os.environ["GOOGLE_API_KEY"] = os.getenv('GOOGLE_GEMINI_TOKEN')
self.llm = ChatGoogleGenerativeAI(
model = self.model_name,
temperature = 0.7,
top_k = 40,
top_p = 1
)
return self.llm
class SermonGeminiPromptTemplate():
# Example of {BIBLE_VERSICLE}
# BIBLE_VERSICLE = Juan 1:1-18
custom_prompt_template_gemini = """
Usted es pastor evangélico que está preparando un sermón para su comunidad sobre {SERMON_TOPIC}
Necesito que me ayudes a encontrar los versículos más relevantes de la Biblia que se relacionen con este tema.
Por favor, proporcióname una lista de {CANT_VERSICULOS} versículos clave, citando el libro, capítulo y versículo.
También incluye una breve frase que resuma el significado de cada versículo en relación con el tema.
Asegúrate de que los versículos provengan de diferentes libros de la Biblia para tener una perspectiva amplia.
Formatea la salida en una lista con viñetas. Gracias por tu ayuda.
Context: {context}
Solo devuelve la respuesta útil a continuación y nada más y responde siempre en español
Respuesta útil:
"""
custom_prompt_template_gemini_buildSermonStart = """
Usted es pastor evangélico que está preparando un sermón para su comunidad.
Necesito que me ayudes a elaborar un sermón sobre los versículos de la biblia
en {BIBLE_VERSICLE} con la estructura:
* Introducción:
* Cuerpo del Sermón:
* Conclusión:
Context: {context}
"""
custom_prompt_template_gemini_buildSermonFronContext = """
Usted es pastor evangélico que está preparando un sermón para su comunidad.
{SERMON_IDEA}
Context: {context}
Ahora ayúdame a desarrollar el sermón siguiente estas mismas ideas
"""
custom_prompt_template_gemini_buildSermonPrepare = """
Usted es pastor evangélico que está preparando un sermón para su comunidad.
{SERMON_CONTEXT}
Context: {context}
Usando el texto anterior responde a la pregunta: {question}
"""
custom_prompt_template_gemini_buildSermonQuestion = """
Usted es pastor evangélico que está preparando un sermón para su comunidad.
{SERMON_IDEA}
Context: {context}
Elabora una guía de preguntas que facilite la discusión bíblica en un grupo
pequeño de estudio bíblico de adultos a partir del sermón en el texto anterior
"""
custom_prompt_template_gemini_buildSermonReflections = """
Usted es pastor evangélico que está preparando un sermón para su comunidad.
{SERMON_IDEA}
Context: {context}
Elaborar una serie de 5 reflexiones a partir del sermón en el texto anterior
"""
custom_prompt_template_gemini_argumentQuestions = """
Usted es pastor evangélico que está preparando un sermón para su comunidad.
A partir de este texto:
\"{QUESTION_ANSWER}\"
Context: {context}
Argumentar con más información manteniendo el texto anterior. Use como fuente la Biblia u otros recursos religiosos.
Solo devuelve la respuesta útil a continuación y nada más y responde siempre en español. Gracias por su ayuda:
"""
sermonPromptMenuGemini = {
'BUILD_INIT': custom_prompt_template_gemini,
'BUILD_EMPTY': custom_prompt_template_gemini_buildSermonStart,
'BUILD_FROM_IDEA': custom_prompt_template_gemini_buildSermonFronContext,
'BUILD_QUESTION': custom_prompt_template_gemini_buildSermonQuestion,
'BUILD_REFLECTIONS': custom_prompt_template_gemini_buildSermonReflections,
'BUILD_PREPARE_QUESTIONS': custom_prompt_template_gemini_buildSermonPrepare,
'BUILD_ADD_INFORMATION_TO_QUEST_ANSWER': custom_prompt_template_gemini_argumentQuestions
}
def __init__(self ):
self.model_name = 'gemini-pro'
def getSermonPromptTemplates(self):
return self.sermonPromptMenuGemini
def getSermonPromptTemplate(self, sermon_id):
if not sermon_id in self.sermonPromptMenuGemini.values():
return None
return self.sermonPromptMenuGemini[sermon_id]
|