Добавьте инструмент web_search_preview для вызова langchain.Python

Программы на Python
Ответить
Anonymous
 Добавьте инструмент web_search_preview для вызова langchain.

Сообщение Anonymous »

Я работаю с LangGraph и LangChain, и мне нужно добавить инструмент web_search_preview в мою модель при использовании model.invoke() в узле графа состояний. Я вижу, что инструмент работает при непосредственном использовании с клиентом OpenAI, но у меня возникли проблемы с интеграцией его в мой рабочий процесс LangGraph.
Текущая реализация
Вот моя текущая структура кода:

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

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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