|
# Written by retoor@molodetz.nl
|
|
|
|
# This script connects to a Pinecone assistant service and provides a command-line interface for user interaction. It includes functionality for creating or retrieving an assistant, handling chat messages, and uploading files to the assistant with specific metadata.
|
|
|
|
# External library used: Pinecone, along with pinecone_plugins.assistant.models.chat for handling message interactions with the assistant.
|
|
|
|
# MIT License
|
|
|
|
|
|
from pinecone import Pinecone
|
|
import os
|
|
import pathlib
|
|
import sys
|
|
from pinecone_plugins.assistant.models.chat import Message
|
|
|
|
pc = Pinecone(api_key=os.environ.get('PINECONE_API_KEY'))
|
|
|
|
ASSISTANT_NAME = "liebranca2"
|
|
|
|
def get_or_create_assistant(assistant_name):
|
|
assistant = None
|
|
try:
|
|
assistant = pc.assistant.create_assistant(
|
|
assistant_name=assistant_name,
|
|
instructions="Your data is based on someone called Liebranka. Act as Liebranka and talk like Liebranca. Respond as Liebranca would do. You also are used to be called libry.",
|
|
region="us",
|
|
timeout=30
|
|
)
|
|
except Exception as e:
|
|
assistant = pc.assistant.Assistant(assistant_name=assistant_name)
|
|
return assistant
|
|
|
|
assistant = get_or_create_assistant(ASSISTANT_NAME)
|
|
|
|
def cli():
|
|
messages = []
|
|
while True:
|
|
messages.append(Message(role="user", content=input("> ")))
|
|
resp = assistant.chat(messages=messages)
|
|
print(resp['message']['content'])
|
|
|
|
def upload(path, glob_pattern):
|
|
files = pathlib.Path(path).glob(glob_pattern)
|
|
for file in files:
|
|
try:
|
|
response = assistant.upload_file(
|
|
file_path=file.absolute(),
|
|
metadata={"document_type": "text"},
|
|
timeout=None
|
|
)
|
|
print(response)
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
if "--test" in sys.argv or "train" in sys.argv:
|
|
upload("/home/retoor/projects/drstats/export", "*Liebranca*")
|
|
upload("/home/retoor/projects/drstats/export", "*mentions*")
|
|
print("Training complete.")
|
|
exit()
|
|
|
|
cli() |