_agenerate() — langchain Function Reference
Architecture documentation for the _agenerate() function in chat_models.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 5eb7c9fa_4a3d_990d_b77e_625bcc3f2c81["_agenerate()"] 36b59643_acfc_fb1d_752e_ae7ec32a79a4["ChatPerplexity"] 5eb7c9fa_4a3d_990d_b77e_625bcc3f2c81 -->|defined in| 36b59643_acfc_fb1d_752e_ae7ec32a79a4 b2a0fb65_dded_ba54_3fc4_cf222600b071["_astream()"] 5eb7c9fa_4a3d_990d_b77e_625bcc3f2c81 -->|calls| b2a0fb65_dded_ba54_3fc4_cf222600b071 b9349daf_2369_217d_7661_9f71b6258a13["_create_message_dicts()"] 5eb7c9fa_4a3d_990d_b77e_625bcc3f2c81 -->|calls| b9349daf_2369_217d_7661_9f71b6258a13 d64af782_4aac_1e87_a23b_e6300fcdc624["_create_usage_metadata()"] 5eb7c9fa_4a3d_990d_b77e_625bcc3f2c81 -->|calls| d64af782_4aac_1e87_a23b_e6300fcdc624 style 5eb7c9fa_4a3d_990d_b77e_625bcc3f2c81 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/partners/perplexity/langchain_perplexity/chat_models.py lines 646–703
async def _agenerate(
self,
messages: list[BaseMessage],
stop: list[str] | None = None,
run_manager: AsyncCallbackManagerForLLMRun | None = None,
**kwargs: Any,
) -> ChatResult:
if self.streaming:
stream_iter = self._astream(
messages, stop=stop, run_manager=run_manager, **kwargs
)
if stream_iter:
return await agenerate_from_stream(stream_iter)
message_dicts, params = self._create_message_dicts(messages, stop)
params = {**params, **kwargs}
response = await self.async_client.chat.completions.create(
messages=message_dicts, **params
)
if hasattr(response, "usage") and response.usage:
usage_dict = response.usage.model_dump()
usage_metadata = _create_usage_metadata(usage_dict)
else:
usage_metadata = None
usage_dict = {}
additional_kwargs = {}
for attr in ["citations", "images", "related_questions", "search_results"]:
if hasattr(response, attr) and getattr(response, attr):
additional_kwargs[attr] = getattr(response, attr)
if hasattr(response, "videos") and response.videos:
additional_kwargs["videos"] = [
v.model_dump() if hasattr(v, "model_dump") else v
for v in response.videos
]
if hasattr(response, "reasoning_steps") and response.reasoning_steps:
additional_kwargs["reasoning_steps"] = [
r.model_dump() if hasattr(r, "model_dump") else r
for r in response.reasoning_steps
]
response_metadata: dict[str, Any] = {
"model_name": getattr(response, "model", self.model)
}
if num_search_queries := usage_dict.get("num_search_queries"):
response_metadata["num_search_queries"] = num_search_queries
if search_context_size := usage_dict.get("search_context_size"):
response_metadata["search_context_size"] = search_context_size
message = AIMessage(
content=response.choices[0].message.content,
additional_kwargs=additional_kwargs,
usage_metadata=usage_metadata,
response_metadata=response_metadata,
)
return ChatResult(generations=[ChatGeneration(message=message)])
Domain
Subdomains
Source
Frequently Asked Questions
What does _agenerate() do?
_agenerate() is a function in the langchain codebase, defined in libs/partners/perplexity/langchain_perplexity/chat_models.py.
Where is _agenerate() defined?
_agenerate() is defined in libs/partners/perplexity/langchain_perplexity/chat_models.py at line 646.
What does _agenerate() call?
_agenerate() calls 3 function(s): _astream, _create_message_dicts, _create_usage_metadata.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free