Обходной путь Langchain для with_structured_output с использованием ChatBedrockPython

Программы на Python
Anonymous
Обходной путь Langchain для with_structured_output с использованием ChatBedrock

Сообщение Anonymous »

Я работаю с библиотекой langchain над реализацией приложения для анализа документов. В частности, я хочу использовать метод маршрутизации, описанный в этой документации. я хотел следовать этому примеру, но моя среда ограничена AWS, и я использую ChatBedrock вместо ChatOpenAI из-за ограничений моего развертывания.
Согласно этому обзору метод with_structured_output, который мне нужен, (пока) не реализован для моделей на AWS Bedrock, поэтому я ищу обходной путь или любой метод для репликации этой функциональности.< /p>
Ключевая функциональность, которую я ищу, показана в этом примере:

Код: Выделить всё

from typing import List
from typing import Literal

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI

class RouteQuery(BaseModel):
"""Route a user query to the most relevant datasource."""

datasources: List[Literal["python_docs", "js_docs", "golang_docs"]] = Field(
...,
description="Given a user question choose which datasources would be most relevant for answering their question",
)

system = """You are an expert at routing a user question to the appropriate data source.

Based on the programming language the question is referring to, route it to the relevant data source."""
prompt = ChatPromptTemplate.from_messages(
[
("system", system),
("human", "{question}"),
]
)

llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
structured_llm = llm.with_structured_output(RouteQuery)
router = prompt | structured_llm
router.invoke(
{
"question": "is there feature parity between the Python and JS implementations of OpenAI chat models"
}
)
Вывод будет следующим:

Код: Выделить всё

RouteQuery(datasources=['python_docs', 'js_docs'])
Самым важным для меня фактом является то, что он просто выбирает элементы из списка без каких-либо дополнительных затрат, что позволяет настроить правильные дополнительные вопросы.
Кто-нибудь нашел обходной путь решения этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/784 ... hatbedrock

Вернуться в «Python»