mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-23 07:09:31 +00:00
Exclude max_tokens
from request if it's None (#14334)
<!-- Thank you for contributing to LangChain! Replace this entire comment with: - **Description:** a description of the change, - **Issue:** the issue # it fixes (if applicable), - **Dependencies:** any dependencies required for this change, - **Tag maintainer:** for a quicker response, tag the relevant maintainer (see below), - **Twitter handle:** we announce bigger features on Twitter. If your PR gets announced, and you'd like a mention, we'll gladly shout you out! Please make sure your PR is passing linting and testing before submitting. Run `make format`, `make lint` and `make test` to check this locally. See contribution guidelines for more information on how to write/run tests, lint, etc: https://github.com/langchain-ai/langchain/blob/master/.github/CONTRIBUTING.md If you're adding a new integration, please include: 1. a test for the integration, preferably unit tests that do not rely on network access, 2. an example notebook showing its use. It lives in `docs/extras` directory. If no one reviews your PR within a few days, please @-mention one of @baskaryan, @eyurtsev, @hwchase17. --> We found a request with `max_tokens=None` results in the following error in Anthropic: ``` HTTPError: 400 Client Error: Bad Request for url: https://oregon.staging.cloud.databricks.com/serving-endpoints/corey-anthropic/invocations. Response text: {"error_code":"INVALID_PARAMETER_VALUE","message":"INVALID_PARAMETER_VALUE: max_tokens was not of type Integer: null"} ``` This PR excludes `max_tokens` if it's None.
This commit is contained in:
parent
86b08d7753
commit
5efaedf488
@ -115,13 +115,13 @@ class ChatMlflow(BaseChatModel):
|
|||||||
"messages": message_dicts,
|
"messages": message_dicts,
|
||||||
"temperature": self.temperature,
|
"temperature": self.temperature,
|
||||||
"n": self.n,
|
"n": self.n,
|
||||||
"stop": stop or self.stop,
|
|
||||||
"max_tokens": self.max_tokens,
|
|
||||||
**self.extra_params,
|
**self.extra_params,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
}
|
}
|
||||||
if stop := self.stop or stop:
|
if stop := self.stop or stop:
|
||||||
data["stop"] = stop
|
data["stop"] = stop
|
||||||
|
if self.max_tokens is not None:
|
||||||
|
data["max_tokens"] = self.max_tokens
|
||||||
resp = self._client.predict(endpoint=self.endpoint, inputs=data)
|
resp = self._client.predict(endpoint=self.endpoint, inputs=data)
|
||||||
return ChatMlflow._create_chat_result(resp)
|
return ChatMlflow._create_chat_result(resp)
|
||||||
|
|
||||||
|
@ -334,13 +334,14 @@ class Databricks(LLM):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def _llm_params(self) -> Dict[str, Any]:
|
def _llm_params(self) -> Dict[str, Any]:
|
||||||
params = {
|
params: Dict[str, Any] = {
|
||||||
"temperature": self.temperature,
|
"temperature": self.temperature,
|
||||||
"n": self.n,
|
"n": self.n,
|
||||||
"stop": self.stop,
|
|
||||||
"max_tokens": self.max_tokens,
|
|
||||||
**(self.model_kwargs or self.extra_params),
|
|
||||||
}
|
}
|
||||||
|
if self.stop:
|
||||||
|
params["stop"] = self.stop
|
||||||
|
if self.max_tokens is not None:
|
||||||
|
params["max_tokens"] = self.max_tokens
|
||||||
return params
|
return params
|
||||||
|
|
||||||
@validator("cluster_id", always=True)
|
@validator("cluster_id", always=True)
|
||||||
@ -457,11 +458,9 @@ class Databricks(LLM):
|
|||||||
request: Dict[str, Any] = {"prompt": prompt}
|
request: Dict[str, Any] = {"prompt": prompt}
|
||||||
if self._client.llm:
|
if self._client.llm:
|
||||||
request.update(self._llm_params)
|
request.update(self._llm_params)
|
||||||
request.update(self.model_kwargs or self.extra_params)
|
request.update(self.model_kwargs or self.extra_params)
|
||||||
else:
|
|
||||||
request.update(self.model_kwargs or self.extra_params)
|
|
||||||
request.update(kwargs)
|
request.update(kwargs)
|
||||||
if stop := self.stop or stop:
|
if stop:
|
||||||
request["stop"] = stop
|
request["stop"] = stop
|
||||||
|
|
||||||
if self.transform_input_fn:
|
if self.transform_input_fn:
|
||||||
|
@ -106,12 +106,14 @@ class Mlflow(LLM):
|
|||||||
"prompt": prompt,
|
"prompt": prompt,
|
||||||
"temperature": self.temperature,
|
"temperature": self.temperature,
|
||||||
"n": self.n,
|
"n": self.n,
|
||||||
"max_tokens": self.max_tokens,
|
|
||||||
**self.extra_params,
|
**self.extra_params,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
}
|
}
|
||||||
if stop := self.stop or stop:
|
if stop := self.stop or stop:
|
||||||
data["stop"] = stop
|
data["stop"] = stop
|
||||||
|
if self.max_tokens is not None:
|
||||||
|
data["max_tokens"] = self.max_tokens
|
||||||
|
|
||||||
resp = self._client.predict(endpoint=self.endpoint, inputs=data)
|
resp = self._client.predict(endpoint=self.endpoint, inputs=data)
|
||||||
return resp["choices"][0]["text"]
|
return resp["choices"][0]["text"]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user