From 00de334f81abddf4ce6e46a931a505fa21cf7d98 Mon Sep 17 00:00:00 2001 From: Aditya S <42727919+aditya-29@users.noreply.github.com> Date: Mon, 24 Jul 2023 21:29:30 -0400 Subject: [PATCH] Fixed sparql SELECT and UPDATE query function (#7758) - Description: Changed "SELECT" and "UPDTAE" intent check from "=" to "in", - Issue: Based on my own testing, most of the LLM (StarCoder, NeoGPT3, etc..) doesn't return a single word response ("SELECT" / "UPDATE") through this modification, we can accomplish the same output without curated prompt engineering. - Dependencies: None - Tag maintainer: @baskaryan - Twitter handle: @aditya_0290 Thank you for maintaining this library, Keep up the good efforts. --------- Co-authored-by: Bagatur --- libs/langchain/langchain/chains/graph_qa/sparql.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/langchain/langchain/chains/graph_qa/sparql.py b/libs/langchain/langchain/chains/graph_qa/sparql.py index 14e27a867d..f1a8ff1f8e 100644 --- a/libs/langchain/langchain/chains/graph_qa/sparql.py +++ b/libs/langchain/langchain/chains/graph_qa/sparql.py @@ -85,15 +85,17 @@ class GraphSparqlQAChain(Chain): _intent = self.sparql_intent_chain.run({"prompt": prompt}, callbacks=callbacks) intent = _intent.strip() - if intent == "SELECT": - sparql_generation_chain = self.sparql_generation_select_chain - elif intent == "UPDATE": - sparql_generation_chain = self.sparql_generation_update_chain - else: + if "SELECT" not in intent and "UPDATE" not in intent: raise ValueError( "I am sorry, but this prompt seems to fit none of the currently " "supported SPARQL query types, i.e., SELECT and UPDATE." ) + elif intent.find("SELECT") < intent.find("UPDATE"): + sparql_generation_chain = self.sparql_generation_select_chain + intent = "SELECT" + else: + sparql_generation_chain = self.sparql_generation_update_chain + intent = "UPDATE" _run_manager.on_text("Identified intent:", end="\n", verbose=self.verbose) _run_manager.on_text(intent, color="green", end="\n", verbose=self.verbose)