Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 3 additions & 23 deletions src/pdl/pdl_utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fnmatch
import json
from typing import Any, Generator, Generic, Mapping, Sequence, TypeVar
from typing import Any, Generator, Generic, Sequence, TypeVar

from .pdl_ast import (
ContributeTarget,
Expand Down Expand Up @@ -106,42 +106,22 @@ def get_contribute_value(
return None


def messages_concat(
def _messages_concat(
messages1: list[dict[str, Any]], messages2: list[dict[str, Any]]
) -> list[dict[str, Any]]:
if len(messages1) == 0:
return messages2
if len(messages2) == 0:
return messages1
left = messages1[-1]
right = messages2[0]
if (
left["role"] == right["role"] and simple_message(left) and simple_message(right)
): # test that there are no other keys
return (
messages1[:-1]
+ [{"role": left["role"], "content": left["content"] + right["content"]}]
+ messages2[1:]
)
return messages1 + messages2


def lazy_messages_concat(
messages1: LazyMessages, messages2: LazyMessages
) -> LazyMessages:
return lazy_apply2(messages_concat, messages1, messages2)
return lazy_apply2(_messages_concat, messages1, messages2)


def messages_to_str(messages: LazyMessages) -> str:
return "\n".join([str(msg) for msg in messages.result()])


def simple_message(message: Mapping[str, Any]) -> bool:
if message.keys() == {"role", "content"} and message["content"] is not None:
return True
return False


def remove_none_values_from_message(message: dict) -> dict[str, Any]:
ret = {}
for key, value in message.items():
Expand Down