Я следую этому руководству, чтобы настроить самостоятельную тряпку: https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_self_rag.ipynb
На данный момент мне не разрешено использовать модели Open AI, поэтому вместо этого я использую модели ChatOllama. Я хочу передавать выходные данные с помощью функции with_structured_output() с OllamaFunctions вместо ChatOllama. Это продемонстрировано здесь: https://python.langchain.com/docs/integrations/chat/ollama_functions/.
По сути, вот код:
from langchain_experimental.llms.ollama_functions import OllamaFunctions
from langchain_core.prompts import PromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
# Schema for structured response
class Person(BaseModel):
name: str = Field(description = "The person's name", required=True)
height: float = Field(description = "The person's height", required=True)
hair_color: str = Field(description = "The person's hair color")
# Prompt template
prompt = PromptTemplate.from_template(
"""Alex is 5 feet tall.
Claudia is 1 feet taller than Alex and jumps higher than him.
Claudia is a brunette and Alex is blonde.
Human: {question}
AI: """
)
# Chain
llm = OllamaFunctions(model = "phi3", format = "json", temperature=0)
structured_llm = llm.with_structured_output(Person)
chain = prompt | structured_llm
Я получаю две ошибки, которые заводят меня в тупик. Первый:
ValidationError: 1 validation error for OllamaFunctions
__root__
langchain_community.chat_models.ollama.ChatOllama() got multiple values for keyword argument 'format' (type=type_error)
поэтому я изменил
llm = OllamaFunctions(model = "phi3", format = "json", temperature=0)
к
llm = OllamaFunctions(model = "phi3", temperature=0)
и это подводит меня, по крайней мере, к следующей строке. Затем строка with_structured_output(Person) завершается с ошибкой:
File ~/anaconda3/envs/pytorch_p310/lib/python3.10/site-packages/langchain_core/language_models/base.py:208, in BaseLanguageModel.with_structured_output(self, schema, **kwargs)
204 def with_structured_output(
205 self, schema: Union[Dict, Type[BaseModel]], **kwargs: Any
206 ) -> Runnable[LanguageModelInput, Union[Dict, BaseModel]]:
207 """Implement this if there is a way of steering the model to generate responses that match a given schema.""" # noqa: E501
--> 208 raise NotImplementedError()
NotImplementedError:
И я не знаю, куда идти дальше. Все что угодно поможет. Спасибо!
Я столкнулся с той же проблемой, что и вы. После проверки кода на git и сравнения его с кодом, установленным через pip, кажется, что в нем отсутствует большая часть кода, который должен поддерживать .with_structured_output(). Я заменил код на код на git, и вроде все работает нормально. Я считаю, что эта проблема будет исправлена, как только они обновят пакет pip для langchain_experimental.
Хобакьюк обнаружил проблему: версии ollama_functions для pip, github и webdoc не синхронизированы. что требует временного обходного пути до тех пор, пока версия pypi не будет обновлена.
Обходной путь включает в себя:
ctrl+c скопировать содержимое кода из github ollama_functions.py
создайте локальный файл ollama_functions.py
, вставьте в него код ctrl+v
в вашем коде Python, затем импортируйте «исправленную» локальную библиотеку, заменив
from langchain_experimental.llms.ollama_functions import OllamaFunctions
сfrom ollama_functions import OllamaFunctions
следите за своим кодом
То же самое и здесь: я ctrl+v/ctrl+p ollama_functions.py в своем проекте. В любом случае, у меня все еще возникают проблемы с выходными данными json llama-3 и mistra-instr и приглашением, которое они рекомендуют в DEFAULT_SYSTEM_TEMPLATE. Кто-нибудь наблюдает такое поведение?