Skip to content

Instantly share code, notes, and snippets.

@sumvedshami
Created February 18, 2024 19:03
Show Gist options
  • Save sumvedshami/066e694fe25f51a317135e079b074115 to your computer and use it in GitHub Desktop.
Save sumvedshami/066e694fe25f51a317135e079b074115 to your computer and use it in GitHub Desktop.
from llama_index.core import Settings
from llama_index.legacy.embeddings import AzureOpenAIEmbedding
from llama_index.legacy.llms.openai import AzureOpenAI
from llama_index.core import (
VectorStoreIndex,
SimpleDirectoryReader,
StorageContext,
load_index_from_storage,
)
from llama_index.core.node_parser import SimpleNodeParser
import tiktoken
import warnings
import os
import logging
import sys
warnings.filterwarnings("ignore")
from dotenv import load_dotenv
from colored_log_handler import ColoredConsoleHandler
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
# Load environment variables from a .env file
load_dotenv()
azure_endpoint = os.getenv("OPENAI_API_BASE")
api_key = os.getenv("OPENAI_API_KEY")
api_version = os.getenv("OPENAI_API_VERSION")
# Configuring Embedding ada 002 model API deployed on Azure
embedding_model = AzureOpenAIEmbedding(
model="text-embedding-ada-002",
deployment_name="text-embedding-ada-002",
azure_endpoint=azure_endpoint,
api_version=api_version,
api_key=api_key,
embed_batch_size=10,
)
Settings.embed_model = embedding_model
Settings.chunk_size = 256
Settings.chunk_overlap = 40
documents = SimpleDirectoryReader(
input_files=["/Users/sumved/Downloads/Demo.pdf"]
).load_data()
# Chunking the documents
parser = SimpleNodeParser.from_defaults()
nodes = parser.get_nodes_from_documents(documents)
# Indexing the documents chunks
index = VectorStoreIndex(nodes=nodes)
# Configure Azure OpenAI Service API
llm = AzureOpenAI(
azure_deployment="gpt-35-turbo",
azure_endpoint=azure_endpoint,
api_version=api_version,
api_key=api_key,
)
Settings.llm = llm
Settings.tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo").encode
# Initialize query engine
query_engine = index.as_query_engine()
print("\nReady to answer your queries. Press Ctrl+Q to exit.")
while True:
try:
query = input("\nEnter your query: ")
# Check for exit command
if query.lower() == "ctrl+q":
print("Exiting program.")
break
answer = query_engine.query(query).response
print("\nQuery:", query)
print("\nAnswer:", answer)
except KeyboardInterrupt:
print("\nInterrupt received, exiting.")
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment