You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On passing filters as arguments for using arcee with Langchain, the filters need to be passed as a dict,
arcee = Arcee(
model="DALM-PubMed",
model_kwargs={
"size": 10, # The number of documents to inform the generation
"filters": [
{
"field_name": "document",
"filter_type": "fuzzy_search",
"value": "neuroscience"
}
]
}
)
TypeError: Object of type DALMFilter is not JSON serializable
The above exception was the direct cause of the following exception:
Exception Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/langchain/llms/arcee.py in _call(self, prompt, stop, run_manager, **kwargs)
145 return self._client.generate(prompt=prompt, **kwargs)
146 except Exception as e:
--> 147 raise Exception(f"Failed to generate text: {e}") from e
Exception: Failed to generate text: Object of type DALMFilter is not JSON serializable
Possible issues:
This is likely because the DALMFilter class does not have a method to convert its instances to a JSON serializable format.
Possible fixes:
Add handling to allow the dict to be passed in to a JSON serializable format.
class DALMFilter(BaseModel):
"""Filters available for a dalm retrieve/generation query
Arguments:
field_name: The field to filter on. Can be 'document' or 'name' to filter on your document's raw text or title
Any other field will be presumed to be a metadata field you included when uploading your context data
filter_type: Currently 'fuzzy_search' and 'strict_search' are supported. More to come soon!
'fuzzy_search' means a fuzzy search on the provided field will be performed. The exact strict doesn't
need to exist in the document for this to find a match. Very useful for scanning a document for some
keyword terms
'strict_search' means that the exact string must appear in the provided field. This is NOT an exact eq
filter. ie a document with content "the happy dog crossed the street" will match on a strict_search of "dog"
but won't match on "the dog". Python equivalent of `return search_string in full_string`
value: The actual value to search for in the context data/metadata
"""
field_name: str
filter_type: FilterType
value: str
_is_metadata: bool = False
The issue mainly seems to be occurring due to how we're handling requests in make_request
def make_request(
request: Literal["post", "get"],
route: Union[str, Route],
body: Optional[Dict[str, Any]] = None,
params: Optional[Dict[str, Any]] = None,
headers: Optional[Dict[str, Any]] = None,
) -> Dict[str, str]:
"""Makes the request"""
headers = headers or {}
internal_headers = {"X-Token": f"{config.ARCEE_API_KEY}", "Content-Type": "application/json"}
headers.update(**internal_headers)
url = f"{config.ARCEE_API_URL}/{config.ARCEE_API_VERSION}/{route}"
req_type = getattr(requests, request)
response = req_type(url, json=body, params=params, headers=headers)
if response.status_code not in (200, 201):
raise Exception(f"Failed to make request. Response: {response.text}")
return response.json()
The text was updated successfully, but these errors were encountered:
On passing filters as arguments for using arcee with Langchain, the filters need to be passed as a dict,
TypeError: Object of type DALMFilter is not JSON serializable
Possible issues:
This is likely because the DALMFilter class does not have a method to convert its instances to a JSON serializable format.
Possible fixes:
Add handling to allow the dict to be passed in to a JSON serializable format.
The issue mainly seems to be occurring due to how we're handling requests in
make_request
The text was updated successfully, but these errors were encountered: