@@ -71,6 +71,12 @@ class VerifyGqlOutput(BaseModel):
7171INTERMEDIATE_STEPS_KEY = "intermediate_steps"
7272
7373
74+ class InvalidGQLGenerationError (ValueError ):
75+ def __init__ (self , message , intermediate_steps = None ):
76+ self .intermediate_steps = intermediate_steps
77+ super ().__init__ (message )
78+
79+
7480class SpannerGraphQAChain (Chain ):
7581 """Chain for question-answering against a Spanner Graph database by
7682 generating GQL statements from natural language questions.
@@ -268,7 +274,9 @@ def execute_with_retry(
268274 finally :
269275 retries += 1
270276
271- raise ValueError ("The generated gql query is invalid" )
277+ raise InvalidGQLGenerationError (
278+ "The generated gql query is invalid" , intermediate_steps
279+ )
272280
273281 def log_invalid_query (
274282 self ,
@@ -309,6 +317,7 @@ def _call(
309317 }
310318 )
311319 if "verified_gql" in verify_response :
320+ intermediate_steps .append ({"raw_generated_gql" : generated_gql })
312321 verified_gql = fix_gql_syntax (verify_response ["verified_gql" ])
313322 intermediate_steps .append ({"verified_gql" : verified_gql })
314323 else :
@@ -322,7 +331,9 @@ def _call(
322331 _run_manager , intermediate_steps , question , verified_gql
323332 )
324333 if not final_gql :
325- raise ValueError ("No GQL was generated." )
334+ raise InvalidGQLGenerationError (
335+ "No GQL was generated." , intermediate_steps
336+ )
326337 _run_manager .on_text ("Full Context:" , end = "\n " , verbose = self .verbose )
327338 _run_manager .on_text (
328339 str (context ), color = "green" , end = "\n " , verbose = self .verbose
0 commit comments