add main.py

This commit is contained in:
2026-05-26 20:04:09 +00:00
parent 6e590ab030
commit c281056888
+74 -148
View File
@@ -1,152 +1,78 @@
import os import os
from langchain_openai import ChatOpenAI from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
from langchain.tools import tool from langchain.tools import tool
from langgraph.checkpoint.memory import MemorySaver from langgraph.checkpoint.memory import MemorySaver
from langgraph.checkpoint.memory import MemorySaver from langgraph import create_agent
from langgraph.checkpoint.memory import MemorySaver from langchain_core.messages import HumanMessage
from langgraph.checkpointer import Checkpointer from rich.console import Console
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # LLM setup
from langgraph.checkpointer import Checkpointer llm = ChatOpenAI(
from langgraph.checkpointer import Checkpointer model="openai/gpt-oss-20b:free",
from langgraph.checkpointer import Checkpointer base_url="https://openrouter.ai/api/v1",
from langgraph.checkpointer import Checkpointer api_key=os.getenv("OPENAI_API_KEY"),
from langgraph.checkpointer import Checkpointer temperature=0.0,
from langgraph.checkpointer import Checkpointer )
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # Console for rich output
from langgraph.checkpointer import Checkpointer console = Console()
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # Dummy tool example: get_price (weather placeholder)
from langgraph.checkpointer import Checkpointer @tool
from langgraph.checkpointer import Checkpointer def get_price(*, city: str, date: str) -> str:
from langgraph.checkpointer import Checkpointer """Return a mock weather price for a city and date."""
from langgraph.checkpointer import Checkpointer return f"Weather in {city} on {date}: sunny 25°C"
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # Memory and agent setup
from langgraph.checkpointer import Checkpointer memory = MemorySaver()
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer agent = create_agent(
from langgraph.checkpointer import Checkpointer llm=llm,
from langgraph.checkpointer import Checkpointer tools=[get_price],
from langgraph.checkpointer import Checkpointer system_prompt="You are a helpful assistant that can call tools.",
from langgraph.checkpointer import Checkpointer checkpointer=memory,
from langgraph.checkpointer import Checkpointer interrupt_before=["tools"],
from langgraph.checkpointer import Checkpointer )
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # Configuration for a single conversation thread
from langgraph.checkpointer import Checkpointer config = {"configurable": {"thread_id": "conversation-1"}}
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # Helper to display tool calls nicely
from langgraph.checkpointer import Checkpointer def display_tool_call(tool_call):
from langgraph.checkpointer import Checkpointer name = tool_call["name"]
from langgraph.checkpointer import Checkpointer args = tool_call["args"]
from langgraph.checkpointer import Checkpointer console.print(f"\n{name}({args})")
from langgraph.checkpointer import Checkpointer console.print("Агент хочет вызвать утилиту", f"{name}({args})")
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer # Main interaction loop
from langgraph.checkpointer import Checkpointer def ask_and_run(user_input, config):
from langgraph.checkpointer import Checkpointer for chunk in agent.stream(user_input, config=config, stream_mode=["messages", "updates"]):
from langgraph.checkpointer import Checkpointer state = agent.get_state(config)
from langgraph.checkpointer import Checkpointer chunk_type, chunk_data = chunk
from langgraph.checkpointer import Checkpointer if chunk_type == "messages":
from langgraph.checkpointer import Checkpointer # stream token output
from langgraph.checkpointer import Checkpointer console.print(chunk_data, end="")
from langgraph.checkpointer import Checkpointer if chunk_type == "updates":
from langgraph.checkpointer import Checkpointer # tool calls
from langgraph.checkpointer import Checkpointer for update in chunk_data:
from langgraph.checkpointer import Checkpointer if update.get("type") == "tool_call":
from langgraph.checkpointer import Checkpointer tool_call = update["tool_call"]
from langgraph.checkpointer import Checkpointer display_tool_call(tool_call)
from langgraph.checkpointer import Checkpointer if "__interrupt__" in chunk_data and state.next == ("tools",):
from langgraph.checkpointer import Checkpointer # pause before tool
from langgraph.checkpointer import Checkpointer answer = console.input("\nРазрешить? (Y/n): ")
from langgraph.checkpointer import Checkpointer if answer.lower().strip() in ("", "y", "yes"):
from langgraph.checkpointer import Checkpointer # resume
from langgraph.checkpointer import Checkpointer ask_and_run(None, config)
from langgraph.checkpointer import Checkpointer else:
from langgraph.checkpointer import Checkpointer console.print("Отменено")
from langgraph.checkpointer import Checkpointer break
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer if __name__ == "__main__":
from langgraph.checkpointer import Checkpointer console.print("Добро пожаловать! Введите 'exit' для выхода.")
from langgraph.checkpointer import Checkpointer while True:
from langgraph.checkpointer import Checkpointer user_input = console.input("\nВы: ")
from langgraph.checkpointer import Checkpointer if user_input.lower() == "exit":
from langgraph.checkpointer import Checkpointer break
from langgraph.checkpointer import Checkpointer ask_and_run({"messages": [{"role": "human", "content": user_input}]}, config)
from langgraph.checkpointer import Checkpointer console.print("\n--- --- ---")
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import Checkpointer
from langgraph.checkpointer import ...