LangChain и LlamaIndex — два самых популярных фреймворка для построения AI-пайплайнов. LangChain специализируется на цепочках вызовов и агентах, а LlamaIndex — на индексации и поиске по документам (RAG). Оба фреймворка работают с ModelSwitch API через OpenAI-совместимый интерфейс.
LangChain + ModelSwitch
LangChain поддерживает любой OpenAI-совместимый API через класс ChatOpenAI. Установите зависимости и настройте подключение:
pip install langchain langchain-openai python-dotenv
# langchain_example.py
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
load_dotenv()
# Подключение LangChain к ModelSwitch
llm = ChatOpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
model="gpt-4o",
temperature=0.7,
)
# Простая цепочка
prompt = ChatPromptTemplate.from_messages([
("system", "Ты эксперт по {topic}. Отвечай подробно и структурированно."),
("user", "{question}"),
])
chain = prompt | llm | StrOutputParser()
response = chain.invoke({
"topic": "машинное обучение",
"question": "Объясни разницу между supervised и unsupervised learning"
})
print(response)
Преимущество ModelSwitch: вы можете переключать модель одной строкой. Замените model="gpt-4o" на model="claude-3.5-sonnet" — весь остальной код LangChain останется без изменений.
LangChain Agent с инструментами
Создайте AI-агента, который может использовать внешние инструменты (поиск, калькулятор, API):
# agent_example.py
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import tool
import os
llm = ChatOpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
model="gpt-4o",
)
@tool
def calculate(expression: str) -> str:
"""Вычисляет математическое выражение."""
try:
result = eval(expression) # В продакшене используйте безопасный парсер
return str(result)
except Exception as e:
return f"Ошибка: {e}"
@tool
def get_current_weather(city: str) -> str:
"""Возвращает текущую погоду в городе (заглушка)."""
return f"В городе {city} сейчас +22°C, солнечно."
tools = [calculate, get_current_weather]
prompt = ChatPromptTemplate.from_messages([
("system", "Ты полезный ассистент. Используй инструменты для ответа на вопросы."),
("user", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = executor.invoke({"input": "Какова погода в Москве? И сколько будет 15% от 3200?"})
print(result["output"])
LlamaIndex: RAG-пайплайн
LlamaIndex позволяет быстро построить систему Retrieval-Augmented Generation для ответов по вашим документам:
pip install llama-index llama-index-llms-openai-like llama-index-embeddings-openai
# rag_example.py
import os
from dotenv import load_dotenv
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.openai import OpenAIEmbedding
load_dotenv()
# Настройка LLM через ModelSwitch
Settings.llm = OpenAILike(
api_base=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
model="gpt-4o",
is_chat_model=True,
max_tokens=2000,
)
# Настройка эмбеддингов через ModelSwitch
Settings.embed_model = OpenAIEmbedding(
api_base=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
model_name="text-embedding-3-small",
)
# Загрузка документов из директории
documents = SimpleDirectoryReader("./docs").load_data()
# Создание индекса
index = VectorStoreIndex.from_documents(documents)
# Создание query engine
query_engine = index.as_query_engine(
similarity_top_k=3,
response_mode="compact",
)
# Задаём вопрос по документам
response = query_engine.query("Какие ключевые особенности продукта?")
print(response)
Комбинирование моделей в пайплайне
ModelSwitch позволяет использовать разные модели для разных этапов пайплайна. Это оптимизирует баланс качества и стоимости:
# Дешёвая модель для извлечения данных
extraction_llm = ChatOpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
model="gpt-4o-mini", # $0.15/1M input — в 15 раз дешевле
)
# Мощная модель для финального ответа
reasoning_llm = ChatOpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
model="claude-3.5-sonnet", # Лучше для аналитики
)
# Используйте extraction_llm для предварительной обработки
# и reasoning_llm для генерации финального ответа
Такой подход может снизить стоимость AI-пайплайна на 50-70% без потери качества, так как большая часть обработки выполняется дешёвой моделью.
Заключение
LangChain и LlamaIndex — мощные инструменты для построения AI-пайплайнов, и оба прекрасно работают с ModelSwitch API. Один ключ даёт доступ к 300+ моделям для любого этапа пайплайна: эмбеддинги, извлечение данных, рассуждение, генерация. Комбинируйте модели для оптимизации стоимости и качества.