""" Slide 117: create_dataset -- набор примеров под eval Section 5: Экосистема Source: slides/section5-ecosystem/slide-07.js Сгенерировано автоматически из slide-NN.js / sectionN.pptx. Паттерн провайдера скопирован из bro-js/agents/teacher/assistant/src/angry_teacher/llm.py. Запуск: cd langchain-evolution-deck cp .env.example .env # заполни OPENAI_API_KEY python examples/slide-117/script.py """ import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI load_dotenv() llm = ChatOpenAI( # model="openrouter/free", # model="qwen/qwen3.5-35b-a3b", model="openai/gpt-oss-20b", # model="nvidia/nemotron-3-nano", # model="qwen/qwen3.5-9b", base_url="https://llm.brojs.ru/v1", # base_url="https://api.minimax.io/v1", # base_url="http://0.0.0.0:8090/v1", # base_url="https://openrouter.ai/api/v1", # api_key=os.getenv("MINIMAX_API_KEY"), api_key=(os.getenv("OPENAI_API_KEY") or "").strip() or None, temperature=0.7, stream_usage=True, ) # === Code from slide 117 === from langsmith import Client client = Client() # 1. Создаем датасет (или достаем существующий по имени) dataset = client.create_dataset( dataset_name="rag-qa-eval-v1", description="RAG golden set", ) # 2. Добавляем примеры пачкой: inputs + reference outputs client.create_examples( dataset_id=dataset.id, inputs=[{"q": "Что такое LCEL?"}, {"q": "Что такое HITL?"}], outputs=[{"a": "LangChain Expression Language"}, {"a": "Human-in-the-loop через interrupt"}], ) # 3. Версионирование: новые данные -> новый датасет client.clone_dataset(dataset.id, dataset_name="rag-qa-eval-v2")