Примеры цепочек
Этот раздел содержит примеры использования Evolution LangChain с LangChain цепочками.
Простая цепочка
Базовый пример создания цепочки:
from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# Создание шаблона
template = "Ответь на вопрос: {question}"
prompt = PromptTemplate(template=template, input_variables=["question"])
# Создание LLM
llm = EvolutionInference(
model="your-model-name",
key_id="your-key-id",
secret="your-secret",
base_url="https://your-api-endpoint.com/v1"
)
# Создание цепочки
chain = LLMChain(llm=llm, prompt=prompt)
# Выполнение
result = chain.run("Что такое машинное обучение?")
print(result)
Цепочка с несколькими переменными
Использование нескольких входных переменных:
from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# Шаблон с несколькими переменными
template = """
Ты - эксперт по {topic}. Ответь на вопрос подробно и информативно.
Вопрос: {question}
Уровень сложности: {difficulty}
Ответ:"""
prompt = PromptTemplate(
template=template,
input_variables=["topic", "question", "difficulty"]
)
# Создание LLM
llm = EvolutionInference(
model="your-model-name",
key_id="your-key-id",
secret="your-secret",
base_url="https://your-api-endpoint.com/v1"
)
# Создание цепочки
chain = LLMChain(llm=llm, prompt=prompt)
# Выполнение с несколькими параметрами
result = chain.run({
"topic": "машинное обучение",
"question": "Что такое нейронные сети?",
"difficulty": "начальный"
})
print(result)
Цепочка с форматированием
Использование форматирования в шаблонах:
from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# Шаблон с форматированием
template = """
# Инструкция
Ты - {role}. Твоя задача: {task}
## Контекст
{context}
## Запрос
{request}
## Требования
- Длина ответа: {length}
- Стиль: {style}
- Язык: {language}
## Ответ
"""
prompt = PromptTemplate(
template=template,
input_variables=["role", "task", "context", "request", "length", "style", "language"]
)
# Создание LLM
llm = EvolutionInference(
model="your-model-name",
key_id="your-key-id",
secret="your-secret",
base_url="https://your-api-endpoint.com/v1"
)
# Создание цепочки
chain = LLMChain(llm=llm, prompt=prompt)
# Выполнение
result = chain.run({
"role": "эксперт по программированию",
"task": "объяснить концепцию",
"context": "Пользователь изучает Python",
"request": "Что такое функции?",
"length": "кратко",
"style": "простой",
"language": "русский"
})
print(result)
Цепочка с валидацией
Добавление валидации входных данных:
from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.output_parsers import PydanticOutputParser
from pydantic import BaseModel, Field
from typing import List
# Модель для валидации вывода
class CodeExplanation(BaseModel):
concept: str = Field(description="Название концепции")
explanation: str = Field(description="Объяснение концепции")
examples: List[str] = Field(description="Примеры использования")
difficulty: str = Field(description="Уровень сложности")
# Создание парсера
parser = PydanticOutputParser(pydantic_object=CodeExplanation)
# Шаблон с парсером
template = """
Объясни концепцию программирования в следующем формате:
{format_instructions}
Концепция: {concept}
Объяснение:"""
prompt = PromptTemplate(
template=template,
input_variables=["concept"],
partial_variables={"format_instructions": parser.get_format_instructions()}
)
# Создание LLM
llm = EvolutionInference(
model="your-model-name",
key_id="your-key-id",
secret="your-secret",
base_url="https://your-api-endpoint.com/v1"
)
# Создание цепочки
chain = LLMChain(llm=llm, prompt=prompt)
# Выполнение с парсингом
result = chain.run("функции")
parsed_result = parser.parse(result)
print(f"Концепция: {parsed_result.concept}")
print(f"Объяснение: {parsed_result.explanation}")
print(f"Примеры: {parsed_result.examples}")
print(f"Сложность: {parsed_result.difficulty}")
Цепочка с обработкой ошибок
Добавление обработки ошибок:
from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
import time
def create_chain_with_retry():
# Создание шаблона
template = "Ответь на вопрос: {question}"
prompt = PromptTemplate(template=template, input_variables=["question"])
# Создание LLM
llm = EvolutionInference(
model="your-model-name",
key_id="your-key-id",
secret="your-secret",
base_url="https://your-api-endpoint.com/v1"
)
# Создание цепочки
chain = LLMChain(llm=llm, prompt=prompt)
return chain
def run_chain_with_retry(chain, question, max_retries=3):
for attempt in range(max_retries):
try:
result = chain.run(question)
return result
except Exception as e:
print(f"Попытка {attempt + 1} не удалась: {e}")
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # Экспоненциальная задержка
else:
raise e
# Использование
chain = create_chain_with_retry()
try:
result = run_chain_with_retry(chain, "Что такое Python?")
print(result)
except Exception as e:
print(f"Все попытки не удались: {e}")
Полный пример
Объединение всех возможностей цепочек:
import os
from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
def main():
print("🚀 Evolution LangChain - Примеры цепочек")
print("=" * 50)
# Создание LLM
llm = EvolutionInference(
model=os.getenv("EVOLUTION_MODEL", "your-model-name"),
key_id=os.getenv("EVOLUTION_KEY_ID", "your-key-id"),
secret=os.getenv("EVOLUTION_SECRET", "your-secret"),
base_url=os.getenv("EVOLUTION_BASE_URL", "https://your-api-endpoint.com/v1")
)
print("✅ LLM инициализирован")
print()
# 1. Простая цепочка
print("1. Простая цепочка:")
template1 = "Ответь на вопрос: {question}"
prompt1 = PromptTemplate(template=template1, input_variables=["question"])
chain1 = LLMChain(llm=llm, prompt=prompt1)
try:
result1 = chain1.run("Что такое Python?")
print(f"Ответ: {result1}")
except Exception as e:
print(f"❌ Ошибка: {e}")
print()
# 2. Цепочка с несколькими переменными
print("2. Цепочка с несколькими переменными:")
template2 = """
Ты - эксперт по {topic}.
Объясни концепцию '{concept}' для уровня {level}.
Объяснение:"""
prompt2 = PromptTemplate(
template=template2,
input_variables=["topic", "concept", "level"]
)
chain2 = LLMChain(llm=llm, prompt=prompt2)
try:
result2 = chain2.run({
"topic": "программирование",
"concept": "функции",
"level": "новичок"
})
print(f"Ответ: {result2}")
except Exception as e:
print(f"❌ Ошибка: {e}")
print()
# 3. Цепочка с форматированием
print("3. Цепочка с форматированием:")
template3 = """
# Задача
Создай краткое описание технологии.
## Технология: {technology}
## Назначение: {purpose}
## Описание
"""
prompt3 = PromptTemplate(
template=template3,
input_variables=["technology", "purpose"]
)
chain3 = LLMChain(llm=llm, prompt=prompt3)
try:
result3 = chain3.run({
"technology": "Docker",
"purpose": "контейнеризация приложений"
})
print(f"Ответ: {result3}")
except Exception as e:
print(f"❌ Ошибка: {e}")
print()
print("🎉 Примеры цепочек завершены!")
if __name__ == "__main__":
main()
Что дальше?
Изучите Продвинутые примеры для сложных сценариев
Прочитайте Интеграция с LangChain для продвинутых паттернов
Посмотрите EvolutionInference для справки по API