mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-13 06:40:04 +00:00
expose function for converting messages to messages (#8426)
This commit is contained in:
parent
06bdbe06fe
commit
af7e70d4af
@ -142,6 +142,18 @@ def _convert_dict_to_message(_dict: Mapping[str, Any]) -> BaseMessage:
|
|||||||
return ChatMessage(content=_dict["content"], role=role)
|
return ChatMessage(content=_dict["content"], role=role)
|
||||||
|
|
||||||
|
|
||||||
|
def convert_openai_messages(messages: List[dict]) -> List[BaseMessage]:
|
||||||
|
"""Convert dictionaries representing OpenAI messages to LangChain format.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
messages: List of dictionaries representing OpenAI messages
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List of LangChain BaseMessage objects.
|
||||||
|
"""
|
||||||
|
return [_convert_dict_to_message(m) for m in messages]
|
||||||
|
|
||||||
|
|
||||||
def _convert_message_to_dict(message: BaseMessage) -> dict:
|
def _convert_message_to_dict(message: BaseMessage) -> dict:
|
||||||
if isinstance(message, ChatMessage):
|
if isinstance(message, ChatMessage):
|
||||||
message_dict = {"role": message.role, "content": message.content}
|
message_dict = {"role": message.role, "content": message.content}
|
||||||
|
@ -9,7 +9,12 @@ from langchain.chat_models.openai import (
|
|||||||
ChatOpenAI,
|
ChatOpenAI,
|
||||||
_convert_dict_to_message,
|
_convert_dict_to_message,
|
||||||
)
|
)
|
||||||
from langchain.schema.messages import FunctionMessage
|
from langchain.schema.messages import (
|
||||||
|
AIMessage,
|
||||||
|
FunctionMessage,
|
||||||
|
HumanMessage,
|
||||||
|
SystemMessage,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_function_message_dict_to_function_message() -> None:
|
def test_function_message_dict_to_function_message() -> None:
|
||||||
@ -27,6 +32,27 @@ def test_function_message_dict_to_function_message() -> None:
|
|||||||
assert result.content == content
|
assert result.content == content
|
||||||
|
|
||||||
|
|
||||||
|
def test__convert_dict_to_message_human() -> None:
|
||||||
|
message = {"role": "user", "content": "foo"}
|
||||||
|
result = _convert_dict_to_message(message)
|
||||||
|
expected_output = HumanMessage(content="foo")
|
||||||
|
assert result == expected_output
|
||||||
|
|
||||||
|
|
||||||
|
def test__convert_dict_to_message_ai() -> None:
|
||||||
|
message = {"role": "assistant", "content": "foo"}
|
||||||
|
result = _convert_dict_to_message(message)
|
||||||
|
expected_output = AIMessage(content="foo")
|
||||||
|
assert result == expected_output
|
||||||
|
|
||||||
|
|
||||||
|
def test__convert_dict_to_message_system() -> None:
|
||||||
|
message = {"role": "system", "content": "foo"}
|
||||||
|
result = _convert_dict_to_message(message)
|
||||||
|
expected_output = SystemMessage(content="foo")
|
||||||
|
assert result == expected_output
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_completion() -> dict:
|
def mock_completion() -> dict:
|
||||||
return {
|
return {
|
||||||
|
Loading…
Reference in New Issue
Block a user