Spaces:
Runtime error
Runtime error
| from llama_index import LLMPredictor, PromptHelper, ServiceContext, GPTKeywordTableIndex | |
| import gradio as gr | |
| from llama_index.indices.knowledge_graph.base import GPTKnowledgeGraphIndex | |
| import os | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain import PromptTemplate | |
| api_key = os.environ['tau_api_key'] | |
| os.environ["OPENAI_API_KEY"] = api_key | |
| template = """ | |
| I want you to act as a document that I am having a conversation with. Your name is "AI Assistant" from Vegetable NZ. | |
| You will provide me with answers from the given info. If the answer is not included, say exactly | |
| "Unfortunately, I do not know the answer to your question." and stop after that. | |
| Refuse to answer any question not about the info. Never break character. | |
| User: What is the capital of France? | |
| AI Assistant: The capital of France is Paris. | |
| User: Who is the author of 'Pride and Prejudice'? | |
| AI Assistant: The author of 'Pride and Prejudice' is Jane Austen. | |
| User: {query} | |
| AI Assistant: """ | |
| prompt_template = PromptTemplate(input_variables=["query"], template=template) | |
| def chat(indexfile, chat_history, user_input): | |
| max_input_size = 4096 | |
| num_outputs = 512 | |
| max_chunk_overlap = 20 | |
| chunk_size_limit = 600 | |
| prompt_helper = PromptHelper( max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit) | |
| llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0.0, model_name="gpt-3.5-turbo", max_tokens=num_outputs)) | |
| service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper) | |
| index_filename = "index/"+ indexfile + ".json" | |
| index = GPTKnowledgeGraphIndex.load_from_disk(index_filename, service_context=service_context) | |
| bot_response = index.query(prompt_template.format(query=user_input), response_mode="compact") | |
| response = "" | |
| for letter in ''.join(bot_response.response): | |
| response += letter + "" | |
| yield chat_history + [(user_input, response)] | |
| index_files = ["Crop Protection", "Environmental Guidance", "Good Management Practice Guides"] | |
| with gr.Blocks() as demo: | |
| gr.Markdown('Vegetable Expert Advisor') | |
| with gr.Tab("Ask away"): | |
| indexfile = gr.Radio(choices=list(index_files)) | |
| chatbot = gr.Chatbot() | |
| message = gr.Textbox () | |
| message.submit(chat, [indexfile, chatbot, message], chatbot) | |
| demo.queue().launch(debug=True) | |