Use this file to discover all available pages before exploring further.
Middleware का मतलब है हर LLM response को intercept करना और आपकी बाकी application तक पहुँचने से पहले RAIL score attach करना। आप अपने LLM client को RAIL wrapper से replace कर देते हैं। Wrapper LLM को call करता है, response evaluate करता है, और content और scores दोनों एक single object में return करता है।
Middleware के बिना, हर LLM call में responsible-AI checks add करने का मतलब है — हर जगह evaluation code लिखना, logic duplicate करना, coverage gaps का risk, और application code का cluttered होना:
# Eval code हर जगह बिखरा हुआasync def get_response(user_message): response = await openai_client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": user_message}] ) content = response.choices[0].message.content # हर function में eval करना याद रखो score = rail_client.eval(content=content, mode="basic") if score.rail_score.score < 7.0: raise ValueError("Response below quality threshold") return content
जब आप RAIL wrapper पर कोई method call करते हो, तीन चीज़ें transparently होती हैं:
आपके messages underlying LLM API को normal API call के रूप में forward हो जाते हैं।
LLM response आपके configured mode में RAIL evaluation endpoint को submit होता है।
एक wrapped response object return होता है जिसमें original content, RAIL score, per-dimension scores, और threshold_met boolean — सब एक ही return value में।
हर response score करो, कभी block मत करो। Response flow interrupt किए बिना quality measure करने के लिए use करो।
client = RAILOpenAI( openai_api_key="...", rail_api_key="...", eval_mode="basic", # No threshold — हमेशा response return होता है)response = await client.chat(messages=[...])print(response.content) # LLM का responseprint(response.rail_score) # RAIL score (हमेशा present)print(response.threshold_met) # None — कोई threshold configured नहीं
जब response bar meet नहीं करता तो ThresholdError raise होता है।
client = RAILOpenAI( openai_api_key="...", rail_api_key="...", eval_mode="basic", threshold=7.0,)try: response = await client.chat(messages=[...]) return response.contentexcept ThresholdError as e: # e.rail_score और e.failed_dimensions available हैं return fallback_response()
Response threshold से नीचे आने पर automatically Safe Regeneration trigger होता है।
client = RAILOpenAI( openai_api_key="...", rail_api_key="...", eval_mode="basic", threshold=7.0, on_fail="regenerate", max_iterations=3,)# Best content return होता है — original या regeneratedresponse = await client.chat(messages=[...])print(response.content)print(response.iterations_taken) # 1 अगर original pass हो गया
अगर आप कोई ऐसा LLM provider use करते हो जिसका built-in wrapper नहीं है, तो core eval() call से अपना middleware बनाओ:
from rail_score_sdk import RailScoreClientrail = RailScoreClient(api_key="...")async def rail_middleware(llm_call, messages, threshold=7.0): """किसी भी async LLM call के लिए generic RAIL middleware।""" content = await llm_call(messages) result = rail.eval(content=content, mode="basic") if result.rail_score.score < threshold: raise ValueError( f"Response scored {result.rail_score.score:.1f} — threshold {threshold} से नीचे। " f"Failed: {[d for d, s in result.dimension_scores.items() if s.score < threshold]}" ) return content, result# किसी भी LLM के साथ use करो:content, score = await rail_middleware(my_llm_call, messages, threshold=7.5)