diff --git a/agent.py b/agent.py deleted file mode 100644 index 984affa..0000000 --- a/agent.py +++ /dev/null @@ -1,97 +0,0 @@ -from langchain.agents import create_agent -from langchain.tools import tool -from langchain_openai import ChatOpenAI -from langgraph.checkpoint.memory import MemorySaver -from pydantic import SecretStr - - -llm = ChatOpenAI( - model="local-model", - base_url="http://localhost:1234/v1", - api_key=SecretStr("fake"), - temperature=0.7, -) - - -@tool -def get_price(product: str, city: str) -> str: - """Возвращает примерную цену продукта в указанном городе.""" - - price_agent = create_agent( - model=llm, - tools=[], - system_prompt=( - "Ты субагент оценки цен. Верни одну markdown-таблицу " - "с колонками: Продукт, Цена (руб.), Магазин." - ), - ) - answer = price_agent.invoke( - { - "messages": [ - { - "role": "human", - "content": ( - f"Оцени реалистичную цену продукта '{product}' " - f"в городе {city}, опираясь на исторические данные о ценах." - ), - } - ] - } - ) - return answer["messages"][-1].content - - -def format_message(message) -> str: - if message.content: - return message.content - if message.tool_calls: - call = message.tool_calls[0] - return f"{call['name']}({call['args']})" - return "" - - -def stream_shopping_agent() -> None: - memory = MemorySaver() - agent = create_agent( - model=llm, - tools=[get_price], - system_prompt="Ты помощник по планированию покупок", - checkpointer=memory, - ) - - stream = agent.stream( - { - "messages": [ - { - "role": "human", - "content": ( - "Помоги составить список покупок: молоко, хлеб, яблоки. " - "Я нахожусь в Казани." - ), - } - ] - }, - stream_mode=["messages", "updates"], - config={"configurable": {"thread_id": "shopping-stream-demo"}}, - ) - - step = None - for chunk_type, chunk_data in stream: - if chunk_type == "messages": - message, meta = chunk_data - current_step = meta.get("langgraph_step") - if current_step != step: - step = current_step - print("\n --- --- --- \n") - if message.content: - print(message.content, end="", flush=True) - - if chunk_type == "updates" and chunk_data.get("model"): - last_message = chunk_data["model"]["messages"][-1] - formatted = format_message(last_message) - if formatted: - print(formatted) - - -if __name__ == "__main__": - stream_shopping_agent()