[docs]classSVEndpointHandler:""" SambaNova Systems Interface for Sambaverse endpoint. :param str host_url: Base URL of the DaaS API service """API_BASE_PATH:str="/api/predict"
[docs]def__init__(self,host_url:str):""" Initialize the SVEndpointHandler. :param str host_url: Base URL of the DaaS API service """self.host_url=host_urlself.http_session=requests.Session()
@staticmethoddef_process_response(response:requests.Response)->Dict:""" Processes the API response and returns the resulting dict. All resulting dicts, regardless of success or failure, will contain the `status_code` key with the API response status code. If the API returned an error, the resulting dict will contain the key `detail` with the error message. If the API call was successful, the resulting dict will contain the key `data` with the response data. :param requests.Response response: the response object to process :return: the response dict :type: dict """result:Dict[str,Any]={}try:lines_result=response.text.strip().split("\n")text_result=lines_result[-1]ifresponse.status_code==200andjson.loads(text_result).get("error"):completion=""forlineinlines_result[:-1]:completion+=json.loads(line)["result"]["responses"][0]["stream_token"]text_result=lines_result[-2]result=json.loads(text_result)result["result"]["responses"][0]["completion"]=completionelse:result=json.loads(text_result)exceptExceptionase:result["detail"]=str(e)if"status_code"notinresult:result["status_code"]=response.status_codereturnresult@staticmethoddef_process_streaming_response(response:requests.Response,)->Generator[Dict,None,None]:"""Process the streaming response"""try:forlineinresponse.iter_lines():chunk=json.loads(line)if"status_code"notinchunk:chunk["status_code"]=response.status_codeifchunk["status_code"]==200andchunk.get("error"):chunk["result"]={"responses":[{"stream_token":""}]}returnchunkyieldchunkexceptExceptionase:raiseRuntimeError(f"Error processing streaming response: {e}")def_get_full_url(self)->str:""" Return the full API URL for a given path. :returns: the full API URL for the sub-path :type: str """returnf"{self.host_url}{self.API_BASE_PATH}"
[docs]defnlp_predict(self,key:str,sambaverse_model_name:Optional[str],input:Union[List[str],str],params:Optional[str]="",stream:bool=False,)->Dict:""" NLP predict using inline input string. :param str project: Project ID in which the endpoint exists :param str endpoint: Endpoint ID :param str key: API Key :param str input_str: Input string :param str params: Input params string :returns: Prediction results :type: dict """ifparams:data={"instance":input,"params":json.loads(params)}else:data={"instance":input}response=self.http_session.post(self._get_full_url(),headers={"key":key,"Content-Type":"application/json","modelName":sambaverse_model_name,},json=data,)returnSVEndpointHandler._process_response(response)
[docs]defnlp_predict_stream(self,key:str,sambaverse_model_name:Optional[str],input:Union[List[str],str],params:Optional[str]="",)->Iterator[Dict]:""" NLP predict using inline input string. :param str project: Project ID in which the endpoint exists :param str endpoint: Endpoint ID :param str key: API Key :param str input_str: Input string :param str params: Input params string :returns: Prediction results :type: dict """ifparams:data={"instance":input,"params":json.loads(params)}else:data={"instance":input}# Streaming outputresponse=self.http_session.post(self._get_full_url(),headers={"key":key,"Content-Type":"application/json","modelName":sambaverse_model_name,},json=data,stream=True,)forchunkinSVEndpointHandler._process_streaming_response(response):yieldchunk
[docs]classSambaverse(LLM):""" Sambaverse large language models. To use, you should have the environment variable ``SAMBAVERSE_API_KEY`` set with your API key. get one in https://sambaverse.sambanova.ai read extra documentation in https://docs.sambanova.ai/sambaverse/latest/index.html Example: .. code-block:: python from langchain_community.llms.sambanova import Sambaverse Sambaverse( sambaverse_url="https://sambaverse.sambanova.ai", sambaverse_api_key="your-sambaverse-api-key", sambaverse_model_name="Meta/llama-2-7b-chat-hf", streaming: = False model_kwargs={ "select_expert": "llama-2-7b-chat-hf", "do_sample": False, "max_tokens_to_generate": 100, "temperature": 0.7, "top_p": 1.0, "repetition_penalty": 1.0, "top_k": 50, "process_prompt": False }, ) """sambaverse_url:str="""""Sambaverse url to use"""sambaverse_api_key:str="""""sambaverse api key"""sambaverse_model_name:Optional[str]=None"""sambaverse expert model to use"""model_kwargs:Optional[dict]=None"""Key word arguments to pass to the model."""streaming:Optional[bool]=False"""Streaming flag to get streamed response."""classConfig:extra="forbid"@classmethoddefis_lc_serializable(cls)->bool:returnTrue@pre_initdefvalidate_environment(cls,values:Dict)->Dict:"""Validate that api key exists in environment."""values["sambaverse_url"]=get_from_dict_or_env(values,"sambaverse_url","SAMBAVERSE_URL",default="https://sambaverse.sambanova.ai",)values["sambaverse_api_key"]=get_from_dict_or_env(values,"sambaverse_api_key","SAMBAVERSE_API_KEY")values["sambaverse_model_name"]=get_from_dict_or_env(values,"sambaverse_model_name","SAMBAVERSE_MODEL_NAME")returnvalues@propertydef_identifying_params(self)->Dict[str,Any]:"""Get the identifying parameters."""return{**{"model_kwargs":self.model_kwargs}}@propertydef_llm_type(self)->str:"""Return type of llm."""return"Sambaverse LLM"def_get_tuning_params(self,stop:Optional[List[str]])->str:""" Get the tuning parameters to use when calling the LLM. Args: stop: Stop words to use when generating. Model output is cut off at the first occurrence of any of the stop substrings. Returns: The tuning parameters as a JSON string. """_model_kwargs=self.model_kwargsor{}_kwarg_stop_sequences=_model_kwargs.get("stop_sequences",[])_stop_sequences=stopor_kwarg_stop_sequencesifnot_kwarg_stop_sequences:_model_kwargs["stop_sequences"]=",".join(f'"{x}"'forxin_stop_sequences)tuning_params_dict={k:{"type":type(v).__name__,"value":str(v)}fork,vin(_model_kwargs.items())}_model_kwargs["stop_sequences"]=_kwarg_stop_sequencestuning_params=json.dumps(tuning_params_dict)returntuning_paramsdef_handle_nlp_predict(self,sdk:SVEndpointHandler,prompt:Union[List[str],str],tuning_params:str,)->str:""" Perform an NLP prediction using the Sambaverse endpoint handler. Args: sdk: The SVEndpointHandler to use for the prediction. prompt: The prompt to use for the prediction. tuning_params: The tuning parameters to use for the prediction. Returns: The prediction result. Raises: ValueError: If the prediction fails. """response=sdk.nlp_predict(self.sambaverse_api_key,self.sambaverse_model_name,prompt,tuning_params)ifresponse["status_code"]!=200:error=response.get("error")iferror:optional_code=error.get("code")optional_details=error.get("details")optional_message=error.get("message")raiseRuntimeError(f"Sambanova /complete call failed with status code "f"{response['status_code']}.\n"f"Message: {optional_message}\n"f"Details: {optional_details}\n"f"Code: {optional_code}\n")else:raiseRuntimeError(f"Sambanova /complete call failed with status code "f"{response['status_code']}."f"{response}.")returnresponse["result"]["responses"][0]["completion"]def_handle_completion_requests(self,prompt:Union[List[str],str],stop:Optional[List[str]])->str:""" Perform a prediction using the Sambaverse endpoint handler. Args: prompt: The prompt to use for the prediction. stop: stop sequences. Returns: The prediction result. Raises: ValueError: If the prediction fails. """ss_endpoint=SVEndpointHandler(self.sambaverse_url)tuning_params=self._get_tuning_params(stop)returnself._handle_nlp_predict(ss_endpoint,prompt,tuning_params)def_handle_nlp_predict_stream(self,sdk:SVEndpointHandler,prompt:Union[List[str],str],tuning_params:str)->Iterator[GenerationChunk]:""" Perform a streaming request to the LLM. Args: sdk: The SVEndpointHandler to use for the prediction. prompt: The prompt to use for the prediction. tuning_params: The tuning parameters to use for the prediction. Returns: An iterator of GenerationChunks. """forchunkinsdk.nlp_predict_stream(self.sambaverse_api_key,self.sambaverse_model_name,prompt,tuning_params):ifchunk["status_code"]!=200:error=chunk.get("error")iferror:optional_code=error.get("code")optional_details=error.get("details")optional_message=error.get("message")raiseValueError(f"Sambanova /complete call failed with status code "f"{chunk['status_code']}.\n"f"Message: {optional_message}\n"f"Details: {optional_details}\n"f"Code: {optional_code}\n")else:raiseRuntimeError(f"Sambanova /complete call failed with status code "f"{chunk['status_code']}."f"{chunk}.")text=chunk["result"]["responses"][0]["stream_token"]generated_chunk=GenerationChunk(text=text)yieldgenerated_chunkdef_stream(self,prompt:Union[List[str],str],stop:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForLLMRun]=None,**kwargs:Any,)->Iterator[GenerationChunk]:"""Stream the Sambaverse's LLM on the given prompt. Args: prompt: The prompt to pass into the model. stop: Optional list of stop words to use when generating. run_manager: Callback manager for the run. kwargs: Additional keyword arguments. directly passed to the sambaverse model in API call. Returns: An iterator of GenerationChunks. """ss_endpoint=SVEndpointHandler(self.sambaverse_url)tuning_params=self._get_tuning_params(stop)try:ifself.streaming:forchunkinself._handle_nlp_predict_stream(ss_endpoint,prompt,tuning_params):ifrun_manager:run_manager.on_llm_new_token(chunk.text)yieldchunkelse:returnexceptExceptionase:# Handle any errors raised by the inference endpointraiseValueError(f"Error raised by the inference endpoint: {e}")fromedef_handle_stream_request(self,prompt:Union[List[str],str],stop:Optional[List[str]],run_manager:Optional[CallbackManagerForLLMRun],kwargs:Dict[str,Any],)->str:""" Perform a streaming request to the LLM. Args: prompt: The prompt to generate from. stop: Stop words to use when generating. Model output is cut off at the first occurrence of any of the stop substrings. run_manager: Callback manager for the run. kwargs: Additional keyword arguments. directly passed to the sambaverse model in API call. Returns: The model output as a string. """completion=""forchunkinself._stream(prompt=prompt,stop=stop,run_manager=run_manager,**kwargs):completion+=chunk.textreturncompletiondef_call(self,prompt:Union[List[str],str],stop:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForLLMRun]=None,**kwargs:Any,)->str:"""Run the LLM on the given input. Args: prompt: The prompt to generate from. stop: Stop words to use when generating. Model output is cut off at the first occurrence of any of the stop substrings. run_manager: Callback manager for the run. kwargs: Additional keyword arguments. directly passed to the sambaverse model in API call. Returns: The model output as a string. """try:ifself.streaming:returnself._handle_stream_request(prompt,stop,run_manager,kwargs)returnself._handle_completion_requests(prompt,stop)exceptExceptionase:# Handle any errors raised by the inference endpointraiseValueError(f"Error raised by the inference endpoint: {e}")frome
[docs]classSSEndpointHandler:""" SambaNova Systems Interface for SambaStudio model endpoints. :param str host_url: Base URL of the DaaS API service """
[docs]def__init__(self,host_url:str,api_base_uri:str):""" Initialize the SSEndpointHandler. :param str host_url: Base URL of the DaaS API service :param str api_base_uri: Base URI of the DaaS API service """self.host_url=host_urlself.api_base_uri=api_base_uriself.http_session=requests.Session()
def_process_response(self,response:requests.Response)->Dict:""" Processes the API response and returns the resulting dict. All resulting dicts, regardless of success or failure, will contain the `status_code` key with the API response status code. If the API returned an error, the resulting dict will contain the key `detail` with the error message. If the API call was successful, the resulting dict will contain the key `data` with the response data. :param requests.Response response: the response object to process :return: the response dict :type: dict """result:Dict[str,Any]={}try:result=response.json()exceptExceptionase:result["detail"]=str(e)if"status_code"notinresult:result["status_code"]=response.status_codereturnresultdef_process_streaming_response(self,response:requests.Response,)->Generator[Dict,None,None]:"""Process the streaming response"""if"api/predict/nlp"inself.api_base_uri:try:importsseclientexceptImportError:raiseImportError("could not import sseclient library""Please install it with `pip install sseclient-py`.")client=sseclient.SSEClient(response)close_conn=Falseforeventinclient.events():ifevent.event=="error_event":close_conn=Truechunk={"event":event.event,"data":event.data,"status_code":response.status_code,}yieldchunkifclose_conn:client.close()elif("api/v2/predict/generic"inself.api_base_urior"api/predict/generic"inself.api_base_uri):try:forlineinresponse.iter_lines():chunk=json.loads(line)if"status_code"notinchunk:chunk["status_code"]=response.status_codeyieldchunkexceptExceptionase:raiseRuntimeError(f"Error processing streaming response: {e}")else:raiseValueError(f"handling of endpoint uri: {self.api_base_uri} not implemented")def_get_full_url(self,path:str)->str:""" Return the full API URL for a given path. :param str path: the sub-path :returns: the full API URL for the sub-path :type: str """returnf"{self.host_url}/{self.api_base_uri}/{path}"
[docs]defnlp_predict(self,project:str,endpoint:str,key:str,input:Union[List[str],str],params:Optional[str]="",stream:bool=False,)->Dict:""" NLP predict using inline input string. :param str project: Project ID in which the endpoint exists :param str endpoint: Endpoint ID :param str key: API Key :param str input_str: Input string :param str params: Input params string :returns: Prediction results :type: dict """ifisinstance(input,str):input=[input]if"api/predict/nlp"inself.api_base_uri:ifparams:data={"inputs":input,"params":json.loads(params)}else:data={"inputs":input}elif"api/v2/predict/generic"inself.api_base_uri:items=[{"id":f"item{i}","value":item}fori,iteminenumerate(input)]ifparams:data={"items":items,"params":json.loads(params)}else:data={"items":items}elif"api/predict/generic"inself.api_base_uri:ifparams:data={"instances":input,"params":json.loads(params)}else:data={"instances":input}else:raiseValueError(f"handling of endpoint uri: {self.api_base_uri} not implemented")response=self.http_session.post(self._get_full_url(f"{project}/{endpoint}"),headers={"key":key},json=data,)returnself._process_response(response)
[docs]defnlp_predict_stream(self,project:str,endpoint:str,key:str,input:Union[List[str],str],params:Optional[str]="",)->Iterator[Dict]:""" NLP predict using inline input string. :param str project: Project ID in which the endpoint exists :param str endpoint: Endpoint ID :param str key: API Key :param str input_str: Input string :param str params: Input params string :returns: Prediction results :type: dict """if"api/predict/nlp"inself.api_base_uri:ifisinstance(input,str):input=[input]ifparams:data={"inputs":input,"params":json.loads(params)}else:data={"inputs":input}elif"api/v2/predict/generic"inself.api_base_uri:ifisinstance(input,str):input=[input]items=[{"id":f"item{i}","value":item}fori,iteminenumerate(input)]ifparams:data={"items":items,"params":json.loads(params)}else:data={"items":items}elif"api/predict/generic"inself.api_base_uri:ifisinstance(input,list):input=input[0]ifparams:data={"instance":input,"params":json.loads(params)}else:data={"instance":input}else:raiseValueError(f"handling of endpoint uri: {self.api_base_uri} not implemented")# Streaming outputresponse=self.http_session.post(self._get_full_url(f"stream/{project}/{endpoint}"),headers={"key":key},json=data,stream=True,)forchunkinself._process_streaming_response(response):yieldchunk
[docs]classSambaStudio(LLM):""" SambaStudio large language models. To use, you should have the environment variables ``SAMBASTUDIO_BASE_URL`` set with your SambaStudio environment URL. ``SAMBASTUDIO_BASE_URI`` set with your SambaStudio api base URI. ``SAMBASTUDIO_PROJECT_ID`` set with your SambaStudio project ID. ``SAMBASTUDIO_ENDPOINT_ID`` set with your SambaStudio endpoint ID. ``SAMBASTUDIO_API_KEY`` set with your SambaStudio endpoint API key. https://sambanova.ai/products/enterprise-ai-platform-sambanova-suite read extra documentation in https://docs.sambanova.ai/sambastudio/latest/index.html Example: .. code-block:: python from langchain_community.llms.sambanova import SambaStudio SambaStudio( sambastudio_base_url="your-SambaStudio-environment-URL", sambastudio_base_uri="your-SambaStudio-base-URI", sambastudio_project_id="your-SambaStudio-project-ID", sambastudio_endpoint_id="your-SambaStudio-endpoint-ID", sambastudio_api_key="your-SambaStudio-endpoint-API-key, streaming=False model_kwargs={ "do_sample": False, "max_tokens_to_generate": 1000, "temperature": 0.7, "top_p": 1.0, "repetition_penalty": 1, "top_k": 50, #"process_prompt": False, #"select_expert": "Meta-Llama-3-8B-Instruct" }, ) """sambastudio_base_url:str="""""Base url to use"""sambastudio_base_uri:str="""""endpoint base uri"""sambastudio_project_id:str="""""Project id on sambastudio for model"""sambastudio_endpoint_id:str="""""endpoint id on sambastudio for model"""sambastudio_api_key:str="""""sambastudio api key"""model_kwargs:Optional[dict]=None"""Key word arguments to pass to the model."""streaming:Optional[bool]=False"""Streaming flag to get streamed response."""classConfig:extra="forbid"@classmethoddefis_lc_serializable(cls)->bool:returnTrue@propertydef_identifying_params(self)->Dict[str,Any]:"""Get the identifying parameters."""return{**{"model_kwargs":self.model_kwargs}}@propertydef_llm_type(self)->str:"""Return type of llm."""return"Sambastudio LLM"@pre_initdefvalidate_environment(cls,values:Dict)->Dict:"""Validate that api key and python package exists in environment."""values["sambastudio_base_url"]=get_from_dict_or_env(values,"sambastudio_base_url","SAMBASTUDIO_BASE_URL")values["sambastudio_base_uri"]=get_from_dict_or_env(values,"sambastudio_base_uri","SAMBASTUDIO_BASE_URI",default="api/predict/generic",)values["sambastudio_project_id"]=get_from_dict_or_env(values,"sambastudio_project_id","SAMBASTUDIO_PROJECT_ID")values["sambastudio_endpoint_id"]=get_from_dict_or_env(values,"sambastudio_endpoint_id","SAMBASTUDIO_ENDPOINT_ID")values["sambastudio_api_key"]=get_from_dict_or_env(values,"sambastudio_api_key","SAMBASTUDIO_API_KEY")returnvaluesdef_get_tuning_params(self,stop:Optional[List[str]])->str:""" Get the tuning parameters to use when calling the LLM. Args: stop: Stop words to use when generating. Model output is cut off at the first occurrence of any of the stop substrings. Returns: The tuning parameters as a JSON string. """_model_kwargs=self.model_kwargsor{}_kwarg_stop_sequences=_model_kwargs.get("stop_sequences",[])_stop_sequences=stopor_kwarg_stop_sequences# if not _kwarg_stop_sequences:# _model_kwargs["stop_sequences"] = ",".join(# f'"{x}"' for x in _stop_sequences# )if"api/v2/predict/generic"inself.sambastudio_base_uri:tuning_params_dict=_model_kwargselse:tuning_params_dict={k:{"type":type(v).__name__,"value":str(v)}fork,vin(_model_kwargs.items())}# _model_kwargs["stop_sequences"] = _kwarg_stop_sequencestuning_params=json.dumps(tuning_params_dict)returntuning_paramsdef_handle_nlp_predict(self,sdk:SSEndpointHandler,prompt:Union[List[str],str],tuning_params:str)->str:""" Perform an NLP prediction using the SambaStudio endpoint handler. Args: sdk: The SSEndpointHandler to use for the prediction. prompt: The prompt to use for the prediction. tuning_params: The tuning parameters to use for the prediction. Returns: The prediction result. Raises: ValueError: If the prediction fails. """response=sdk.nlp_predict(self.sambastudio_project_id,self.sambastudio_endpoint_id,self.sambastudio_api_key,prompt,tuning_params,)ifresponse["status_code"]!=200:optional_detail=response.get("detail")ifoptional_detail:raiseRuntimeError(f"Sambanova /complete call failed with status code "f"{response['status_code']}.\n Details: {optional_detail}")else:raiseRuntimeError(f"Sambanova /complete call failed with status code "f"{response['status_code']}.\n response {response}")if"api/predict/nlp"inself.sambastudio_base_uri:returnresponse["data"][0]["completion"]elif"api/v2/predict/generic"inself.sambastudio_base_uri:returnresponse["items"][0]["value"]["completion"]elif"api/predict/generic"inself.sambastudio_base_uri:returnresponse["predictions"][0]["completion"]else:raiseValueError(f"handling of endpoint uri: {self.sambastudio_base_uri} not implemented")def_handle_completion_requests(self,prompt:Union[List[str],str],stop:Optional[List[str]])->str:""" Perform a prediction using the SambaStudio endpoint handler. Args: prompt: The prompt to use for the prediction. stop: stop sequences. Returns: The prediction result. Raises: ValueError: If the prediction fails. """ss_endpoint=SSEndpointHandler(self.sambastudio_base_url,self.sambastudio_base_uri)tuning_params=self._get_tuning_params(stop)returnself._handle_nlp_predict(ss_endpoint,prompt,tuning_params)def_handle_nlp_predict_stream(self,sdk:SSEndpointHandler,prompt:Union[List[str],str],tuning_params:str)->Iterator[GenerationChunk]:""" Perform a streaming request to the LLM. Args: sdk: The SVEndpointHandler to use for the prediction. prompt: The prompt to use for the prediction. tuning_params: The tuning parameters to use for the prediction. Returns: An iterator of GenerationChunks. """forchunkinsdk.nlp_predict_stream(self.sambastudio_project_id,self.sambastudio_endpoint_id,self.sambastudio_api_key,prompt,tuning_params,):ifchunk["status_code"]!=200:error=chunk.get("error")iferror:optional_code=error.get("code")optional_details=error.get("details")optional_message=error.get("message")raiseValueError(f"Sambanova /complete call failed with status code "f"{chunk['status_code']}.\n"f"Message: {optional_message}\n"f"Details: {optional_details}\n"f"Code: {optional_code}\n")else:raiseRuntimeError(f"Sambanova /complete call failed with status code "f"{chunk['status_code']}."f"{chunk}.")if"api/predict/nlp"inself.sambastudio_base_uri:text=json.loads(chunk["data"])["stream_token"]elif"api/v2/predict/generic"inself.sambastudio_base_uri:text=chunk["result"]["items"][0]["value"]["stream_token"]elif"api/predict/generic"inself.sambastudio_base_uri:iflen(chunk["result"]["responses"])>0:text=chunk["result"]["responses"][0]["stream_token"]else:text=""else:raiseValueError(f"handling of endpoint uri: {self.sambastudio_base_uri}"f"not implemented")generated_chunk=GenerationChunk(text=text)yieldgenerated_chunkdef_stream(self,prompt:Union[List[str],str],stop:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForLLMRun]=None,**kwargs:Any,)->Iterator[GenerationChunk]:"""Call out to Sambanova's complete endpoint. Args: prompt: The prompt to pass into the model. stop: Optional list of stop words to use when generating. Returns: The string generated by the model. """ss_endpoint=SSEndpointHandler(self.sambastudio_base_url,self.sambastudio_base_uri)tuning_params=self._get_tuning_params(stop)try:ifself.streaming:forchunkinself._handle_nlp_predict_stream(ss_endpoint,prompt,tuning_params):ifrun_manager:run_manager.on_llm_new_token(chunk.text)yieldchunkelse:returnexceptExceptionase:# Handle any errors raised by the inference endpointraiseValueError(f"Error raised by the inference endpoint: {e}")fromedef_handle_stream_request(self,prompt:Union[List[str],str],stop:Optional[List[str]],run_manager:Optional[CallbackManagerForLLMRun],kwargs:Dict[str,Any],)->str:""" Perform a streaming request to the LLM. Args: prompt: The prompt to generate from. stop: Stop words to use when generating. Model output is cut off at the first occurrence of any of the stop substrings. run_manager: Callback manager for the run. kwargs: Additional keyword arguments. directly passed to the sambaverse model in API call. Returns: The model output as a string. """completion=""forchunkinself._stream(prompt=prompt,stop=stop,run_manager=run_manager,**kwargs):completion+=chunk.textreturncompletiondef_call(self,prompt:Union[List[str],str],stop:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForLLMRun]=None,**kwargs:Any,)->str:"""Call out to Sambanova's complete endpoint. Args: prompt: The prompt to pass into the model. stop: Optional list of stop words to use when generating. Returns: The string generated by the model. """ifstopisnotNone:raiseException("stop not implemented")try:ifself.streaming:returnself._handle_stream_request(prompt,stop,run_manager,kwargs)returnself._handle_completion_requests(prompt,stop)exceptExceptionase:# Handle any errors raised by the inference endpointraiseValueError(f"Error raised by the inference endpoint: {e}")frome