Source code for langchain_community.chat_models.volcengine_maas
from__future__importannotationsfromtypingimportAny,Dict,Iterator,List,Mapping,Optional,castfromlangchain_core.callbacksimportCallbackManagerForLLMRunfromlangchain_core.language_models.chat_modelsimportBaseChatModelfromlangchain_core.messagesimport(AIMessage,AIMessageChunk,BaseMessage,FunctionMessage,HumanMessage,SystemMessage,)fromlangchain_core.outputsimportChatGeneration,ChatGenerationChunk,ChatResultfromlangchain_community.llms.volcengine_maasimportVolcEngineMaasBasedef_convert_message_to_dict(message:BaseMessage)->dict:ifisinstance(message,SystemMessage):message_dict={"role":"system","content":message.content}elifisinstance(message,HumanMessage):message_dict={"role":"user","content":message.content}elifisinstance(message,AIMessage):message_dict={"role":"assistant","content":message.content}elifisinstance(message,FunctionMessage):message_dict={"role":"function","content":message.content}else:raiseValueError(f"Got unknown type {message}")returnmessage_dict
[docs]defconvert_dict_to_message(_dict:Mapping[str,Any])->AIMessage:"""Convert a dict to a message."""content=_dict.get("choice",{}).get("message",{}).get("content","")returnAIMessage(content=content)
[docs]classVolcEngineMaasChat(BaseChatModel,VolcEngineMaasBase):"""Volc Engine Maas hosts a plethora of models. You can utilize these models through this class. To use, you should have the ``volcengine`` python package installed. and set access key and secret key by environment variable or direct pass those to this class. access key, secret key are required parameters which you could get help https://www.volcengine.com/docs/6291/65568 In order to use them, it is necessary to install the 'volcengine' Python package. The access key and secret key must be set either via environment variables or passed directly to this class. access key and secret key are mandatory parameters for which assistance can be sought at https://www.volcengine.com/docs/6291/65568. The two methods are as follows: * Environment Variable Set the environment variables 'VOLC_ACCESSKEY' and 'VOLC_SECRETKEY' with your access key and secret key. * Pass Directly to Class Example: .. code-block:: python from langchain_community.llms import VolcEngineMaasLLM model = VolcEngineMaasChat(model="skylark-lite-public", volc_engine_maas_ak="your_ak", volc_engine_maas_sk="your_sk") """@propertydef_llm_type(self)->str:"""Return type of chat model."""return"volc-engine-maas-chat"@classmethoddefis_lc_serializable(cls)->bool:"""Return whether this model can be serialized by Langchain."""returnFalse@propertydef_identifying_params(self)->Dict[str,Any]:return{**{"endpoint":self.endpoint,"model":self.model},**super()._identifying_params,}def_convert_prompt_msg_params(self,messages:List[BaseMessage],**kwargs:Any,)->Dict[str,Any]:model_req={"model":{"name":self.model,}}ifself.model_versionisnotNone:model_req["model"]["version"]=self.model_versionreturn{**model_req,"messages":[_convert_message_to_dict(message)formessageinmessages],"parameters":{**self._default_params,**kwargs},}def_stream(self,messages:List[BaseMessage],stop:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForLLMRun]=None,**kwargs:Any,)->Iterator[ChatGenerationChunk]:ifstopisnotNone:kwargs["stop"]=stopparams=self._convert_prompt_msg_params(messages,**kwargs)forresinself.client.stream_chat(params):ifres:msg=convert_dict_to_message(res)chunk=ChatGenerationChunk(message=AIMessageChunk(content=msg.content))ifrun_manager:run_manager.on_llm_new_token(cast(str,msg.content),chunk=chunk)yieldchunkdef_generate(self,messages:List[BaseMessage],stop:Optional[List[str]]=None,run_manager:Optional[CallbackManagerForLLMRun]=None,**kwargs:Any,)->ChatResult:completion=""ifself.streaming:forchunkinself._stream(messages,stop,run_manager,**kwargs):completion+=chunk.textelse:ifstopisnotNone:kwargs["stop"]=stopparams=self._convert_prompt_msg_params(messages,**kwargs)res=self.client.chat(params)msg=convert_dict_to_message(res)completion=cast(str,msg.content)message=AIMessage(content=completion)returnChatResult(generations=[ChatGeneration(message=message)])