Текущая реализация
Вот моя текущая структура кода:
Код: Выделить всё
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver
# Model initialization
model = ChatOpenAI(
model="gpt-4.1",
temperature=0.3
)
# State definition
class AssistanceState(TypedDict):
messages: Annotated[list, add_messages]
user_profile: Dict
chat_id: str
# ... other fields
# Node function where I want to use web_search_preview
def conversation(state: AssistanceState) -> AssistanceState:
user_profile = state.get("user_profile", {})
system_content = f"""
Eres un asistente culinario experto...
{user_profile}
"""
messages = [SystemMessage(content=system_content)] + state["messages"]
config = {"configurable": {"thread_id": state["chat_id"]}}
# This is where I want to add web_search_preview tool
response = model.invoke(messages, config=config)
return {"messages": [response]}
Я пытался привязать инструмент к модели следующим образом:
Код: Выделить всё
# Attempt 1: Binding tools before invoke
model.bind_tools(tools=[{"type": "web_search_preview"}])
response = model.invoke(messages, config=config, tools=[{"type": "web_search_preview"}])
# Attempt 2: Passing tools directly in invoke
response = model.invoke(messages, config=config, tools=[{"type": "web_search_preview"}])
# Attempt 3: Using the OpenAI client directly (this works)
def search_web_openai(query: str) -> str:
response = client.responses.create(
model="gpt-4.1",
tools=[{"type": "web_search_preview"}],
input=query
)
# ... process response
Инструмент web_search_preview работает отлично, когда я использую клиент OpenAI напрямую, но когда я пытаюсь интегрировать его в свой рабочий процесс LangGraph с помощью model.invoke(), он кажется недоступным или модель его не использует.
Вопросы
- Как Могу ли я правильно добавить инструмент web_search_preview в модель LangChain в узле LangGraph?
- Есть ли особый способ настроить модель для использования этого инструмента в контексте графа состояний?
- Нужны ли какие-либо дополнительные настройки для работы инструмента с методом вызова LangChain?
- LangChain: последняя версия
- LangGraph: последняя версия
- OpenAI API: использование GPT-4.1
- Python: 3.9+
Я хочу, чтобы модель могла использовать инструмент web_search_preview при ответе на запросы пользователей в рамках моего рабочего процесса LangGraph, аналогично тому, как это работает при непосредственном использовании клиента OpenAI.
Буду очень признателен за любую помощь или рекомендации!>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ain-invoke
Мобильная версия