core[patch]: support oai dicts as messages (#25621)

and update langsmtih example selector docs
This commit is contained in:
Bagatur
2024-08-21 09:13:15 -07:00
committed by GitHub
parent a78843bb77
commit 0bc3845e1e
3 changed files with 87 additions and 45 deletions

View File

@@ -10,6 +10,7 @@ Some examples of what you can do with these functions include:
from __future__ import annotations
import inspect
import json
from functools import partial
from typing import (
TYPE_CHECKING,
@@ -213,7 +214,23 @@ def _create_message_from_message_type(
if id is not None:
kwargs["id"] = id
if tool_calls is not None:
kwargs["tool_calls"] = tool_calls
kwargs["tool_calls"] = []
for tool_call in tool_calls:
# Convert OpenAI-format tool call to LangChain format.
if "function" in tool_call:
args = tool_call["function"]["arguments"]
if isinstance(args, str):
args = json.loads(args, strict=False)
kwargs["tool_calls"].append(
{
"name": tool_call["function"]["name"],
"args": args,
"id": tool_call["id"],
"type": "tool_call",
}
)
else:
kwargs["tool_calls"].append(tool_call)
if message_type in ("human", "user"):
message: BaseMessage = HumanMessage(content=content, **kwargs)
elif message_type in ("ai", "assistant"):
@@ -271,7 +288,8 @@ def _convert_to_message(message: MessageLikeRepresentation) -> BaseMessage:
msg_type = msg_kwargs.pop("role")
except KeyError:
msg_type = msg_kwargs.pop("type")
msg_content = msg_kwargs.pop("content")
# None msg content is not allowed
msg_content = msg_kwargs.pop("content") or ""
except KeyError:
raise ValueError(
f"Message dict must contain 'role' and 'content' keys, got {message}"

View File

@@ -5,12 +5,8 @@ from typing import Any, Dict, List, Optional
from langchain_core.exceptions import OutputParserException
from langchain_core.messages import AIMessage, InvalidToolCall
from langchain_core.messages.tool import (
invalid_tool_call,
)
from langchain_core.messages.tool import (
tool_call as create_tool_call,
)
from langchain_core.messages.tool import invalid_tool_call
from langchain_core.messages.tool import tool_call as create_tool_call
from langchain_core.output_parsers.transform import BaseCumulativeTransformOutputParser
from langchain_core.outputs import ChatGeneration, Generation
from langchain_core.pydantic_v1 import ValidationError