Spaces:
Build error
Build error
| from typing import Any, List, Optional, Sequence | |
| from dataclasses import dataclass | |
| import time | |
| from langchain_core.callbacks.manager import CallbackManagerForLLMRun | |
| from langchain_core.language_models.chat_models import BaseChatModel | |
| from langchain_core.messages import ( | |
| BaseMessage, | |
| AIMessage, | |
| HumanMessage, | |
| ) | |
| from langchain_core.outputs import ( | |
| ChatResult, | |
| ChatGeneration, | |
| ) | |
| class EchoLLM(BaseChatModel): | |
| """Test LLM class that returns input as output | |
| delay (s): seconds to wait before answer. | |
| """ | |
| delay: int = 0 | |
| def _llm_type(self) -> str: | |
| """Return identifier of LLM type""" | |
| return "echo" | |
| def _generate( | |
| self, | |
| messages: List[BaseMessage], | |
| stop: Optional[List[str]] = None, | |
| run_manager: Optional[CallbackManagerForLLMRun] = None, | |
| **kwargs: Any, | |
| ) -> ChatResult: | |
| """Return last message content as output | |
| Note: | |
| Method is required by langchain interface. | |
| Do not use directly. | |
| """ | |
| if not messages: | |
| return ChatResult(generations=[]) | |
| message = AIMessage(content=messages[-1].content) | |
| generation = ChatGeneration(message=message) | |
| if self.delay > 0: | |
| time.sleep(self.delay) | |
| return ChatResult(generations=[generation]) | |
| def _combine_llm_outputs(self, llm_outputs: List[Optional[dict]]) -> dict: | |
| """Combine multiple outputs into one | |
| Note: | |
| Method is required by langchain interface. | |
| Do not use directly. | |
| """ | |
| return {} | |
| def test_echo_llm(): | |
| """Test that EchoLLM works as expected""" | |
| test_message = "test message" | |
| llm = EchoLLM() | |
| messages = [HumanMessage(content=test_message)] | |
| result = llm.invoke(messages) | |
| assert isinstance(result, AIMessage) | |
| assert result.content == test_message | |