-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathhelpers.py
54 lines (35 loc) · 1.2 KB
/
helpers.py
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
from decouple import config
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import UpstashVectorStore
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
OPENAI_API_KEY = config("OPENAI_API_KEY")
UPSTASH_VECTOR_REST_URL = config("UPSTASH_VECTOR_REST_URL")
UPSTASH_VECTOR_REST_TOKEN = config("UPSTASH_VECTOR_REST_TOKEN")
LLM_CONFIG = {
"model": "gpt-4o-mini",
"api_key": OPENAI_API_KEY
}
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
store = UpstashVectorStore(
embedding=embeddings,
index_url=UPSTASH_VECTOR_REST_URL,
index_token=UPSTASH_VECTOR_REST_TOKEN
)
llm = ChatOpenAI(**LLM_CONFIG)
message = """
Answer this question using the provided context only.
{question}
Context:
{context}
"""
prompt = ChatPromptTemplate.from_messages([("human", message)])
retriever = store.as_retriever(
search_type='similarity',
search_kwargs={'k': 2}
)
parser = StrOutputParser()
def get_chain():
return {"context": retriever, "question": RunnablePassthrough()} | prompt | llm | parser