| import os |
| import pinecone |
| import openai |
| from components.configs import querydocnumber, num_chatmsg_history, embedderengine |
| from components.configs import PINECONE_API_ENV, PINECONE_INDEX_NAME,PINECONE_NAMESPACE |
|
|
| |
| |
| def autochatmemory(chatmemory, |
| relevantcontents, |
| user_message, |
| response, |
| num_chatmsg_history=num_chatmsg_history |
| ): |
| formatted_usermessage = f"Provided Info:\n{relevantcontents}\nUser:{user_message}" |
| chatmemory.append({"role": "user", "content": formatted_usermessage}) |
| chatmemory.append({"role": "assistant", "content": response}) |
| if len(chatmemory) > num_chatmsg_history * 2: |
| chatmemory[:-(num_chatmsg_history * 2)] = [] |
| return chatmemory |
|
|
| |
| |
| def documentretrival( |
| user_message, |
| docnumber = querydocnumber, |
| PINECONE_API_ENV = PINECONE_API_ENV, |
| PINECONE_INDEX_NAME = PINECONE_INDEX_NAME, |
| PINECONE_NAMESPACE =PINECONE_NAMESPACE, |
| embedderengine=embedderengine, |
| ): |
| |
| embeddeduser_message = openai.Embedding.create( |
| input=user_message, |
| engine=embedderengine |
| )['data'][0]['embedding'] |
| |
| pinecone.init(api_key=os.environ['PINECONE_API_KEY'], |
| environment=PINECONE_API_ENV) |
| index = pinecone.Index(PINECONE_INDEX_NAME) |
| |
| relevantdocument = index.query( |
| namespace=PINECONE_NAMESPACE, |
| top_k=docnumber, |
| include_values=False, |
| include_metadata=True, |
| vector=embeddeduser_message, |
| ) |
| return relevantdocument |
|
|
| |
| def pinecone_documentformatter(relevantdocument): |
| formattedrelevantdocument = "" |
| matches = relevantdocument['matches'] |
| for i, match in enumerate(matches, 1): |
| formattedrelevantdocument += f"{i}-\n" |
| metadata = match['metadata'] |
| |
| formattedrelevantdocument += f"text: {metadata.get('text', '')}\n" |
| |
| for key in metadata: |
| if key != 'text': |
| formattedrelevantdocument += f"{key}: {metadata[key]}\n" |
| formattedrelevantdocument |
| return formattedrelevantdocument |
|
|
| |
| def formatted_documentretrival(user_message,docnumber=querydocnumber): |
| relevantdocument= documentretrival( |
| user_message, |
| docnumber |
| ) |
| formattedrelevantdocument=pinecone_documentformatter(relevantdocument) |
| return formattedrelevantdocument |