mirror of
https://github.com/hwchase17/langchain
synced 2024-11-16 06:13:16 +00:00
core(minor): Allow explicit types for ChatMessageHistory adds (#14967)
<!-- 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://python.langchain.com/docs/contributing/ 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. --> ## Description Changes the behavior of `add_user_message` and `add_ai_message` to allow for messages of those types to be passed in. Currently, if you want to use the `add_user_message` or `add_ai_message` methods, you have to pass in a string. For `add_message` on `ChatMessageHistory`, however, you have to pass a `BaseMessage`. This behavior seems a bit inconsistent. Personally, I'd love to be able to be explicit that I want to `add_user_message` and pass in a `HumanMessage` without having to grab the `content` attribute. This PR allows `add_user_message` to accept `HumanMessage`s or `str`s and `add_ai_message` to accept `AIMessage`s or `str`s to add that functionality and ensure backwards compatibility. ## Issue * None ## Dependencies * None ## Tag maintainer @hinthornw @baskaryan ## Note `make test` results in `make: *** No rule to make target 'test'. Stop.`
This commit is contained in:
parent
f2782f4c86
commit
d4f45b1421
@ -1,7 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import List
|
||||
from typing import List, Union
|
||||
|
||||
from langchain_core.messages import (
|
||||
AIMessage,
|
||||
@ -42,21 +42,27 @@ class BaseChatMessageHistory(ABC):
|
||||
messages: List[BaseMessage]
|
||||
"""A list of Messages stored in-memory."""
|
||||
|
||||
def add_user_message(self, message: str) -> None:
|
||||
def add_user_message(self, message: Union[HumanMessage, str]) -> None:
|
||||
"""Convenience method for adding a human message string to the store.
|
||||
|
||||
Args:
|
||||
message: The string contents of a human message.
|
||||
message: The human message to add
|
||||
"""
|
||||
self.add_message(HumanMessage(content=message))
|
||||
if isinstance(message, HumanMessage):
|
||||
self.add_message(message)
|
||||
else:
|
||||
self.add_message(HumanMessage(content=message))
|
||||
|
||||
def add_ai_message(self, message: str) -> None:
|
||||
def add_ai_message(self, message: Union[AIMessage, str]) -> None:
|
||||
"""Convenience method for adding an AI message string to the store.
|
||||
|
||||
Args:
|
||||
message: The string contents of an AI message.
|
||||
message: The AI message to add.
|
||||
"""
|
||||
self.add_message(AIMessage(content=message))
|
||||
if isinstance(message, AIMessage):
|
||||
self.add_message(message)
|
||||
else:
|
||||
self.add_message(AIMessage(content=message))
|
||||
|
||||
@abstractmethod
|
||||
def add_message(self, message: BaseMessage) -> None:
|
||||
|
Loading…
Reference in New Issue
Block a user