Metadata-Version: 2.1
Name: sonika-langchain-bot
Version: 0.0.6
Summary: Agente langchain con LLM
Author: Erley Blanco Carvajal
License: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: langchain<1.0.0,>=0.3.0
Requires-Dist: langchain-community<1.0.0,>=0.3.0
Requires-Dist: langchain-core<1.0.0,>=0.3.5
Requires-Dist: langchain-openai<1.0.0,>=0.2.0
Requires-Dist: langgraph<1.0.0,>=0.2.39
Requires-Dist: langgraph-checkpoint<3.0.0,>=2.0.2
Requires-Dist: langgraph-sdk<2.0.0,>=0.1.34
Requires-Dist: dataclasses-json<1.0.0,>=0.6.7
Requires-Dist: python-dateutil<3.0.0,>=2.9.0
Requires-Dist: tiktoken<1.0.0,>=0.7.0
Requires-Dist: pydantic<3.0.0,>=2.9.2
Requires-Dist: faiss-cpu<2.0.0,>=1.8.0
Requires-Dist: pypdf<6.0.0,>=5.0.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.1
Requires-Dist: typing_extensions<5.0.0,>=4.12.0
Requires-Dist: typing-inspect<1.0.0,>=0.9.0
Provides-Extra: dev
Requires-Dist: sphinx<9.0.0,>=8.1.3; extra == "dev"
Requires-Dist: sphinx-rtd-theme<4.0.0,>=3.0.1; extra == "dev"

# Sonika LangChain Bot

Una librería Python que implementa un bot conversacional utilizando LangChain con capacidades BDI (Belief-Desire-Intention) y clasificación de texto.

## Instalación

```bash
pip install sonika-langchain-bot
```

## Requisitos previos

Necesitarás las siguientes API keys:

- OpenAI API Key

Crea un archivo `.env` en la raíz de tu proyecto con las siguientes variables:

```env
OPENAI_API_KEY=tu_api_key_aqui
```

## Características principales

- Bot conversacional con arquitectura BDI
- Clasificación de texto
- Ejecución de código personalizado por medio de tools

## Uso básico

### Ejemplo de Bot BDI

```python
from sonika_langchain_bot.langchain_bdi import Belief, BeliefType
from sonika_langchain_bot.langchain_bot_agent_bdi import LangChainBot
from sonika_langchain_bot.langchain_models import OpenAILanguageModel
from langchain_openai import OpenAIEmbeddings

# Inicializar el modelo de lenguaje
language_model = OpenAILanguageModel(api_key, model_name='gpt-4-mini-2024-07-18', temperature=1)
embeddings = OpenAIEmbeddings(api_key=api_key)

# Configurar herramientas propias o de terceros
search = TavilySearchResults(max_results=2, api_key=api_key_tavily)
tools = [search]

# Configurar creencias
beliefs = [
    Belief(
        content="Eres un asistente de chat",
        type=BeliefType.PERSONALITY,
        confidence=1,
        source='personality'
    )
]

# Crear instancia del bot
bot = LangChainBot(language_model, embeddings, beliefs=beliefs, tools=tools)

# Obtener respuesta
response = bot.get_response("Hola como te llamas?")
```

### Ejemplo de Clasificación de Texto

```python
from sonika_langchain_bot.langchain_clasificator import OpenAIModel, TextClassifier
from pydantic import BaseModel, Field

# Definir estructura de clasificación
class Classification(BaseModel):
    intention: str = Field()
    sentiment: str = Field(..., enum=["feliz", "neutral", "triste", "excitado"])
    aggressiveness: int = Field(
        ...,
        description="describes how aggressive the statement is",
        enum=[1, 2, 3, 4, 5],
    )
    language: str = Field(
        ..., enum=["español", "ingles", "frances", "aleman", "italiano"]
    )

# Inicializar clasificador
model = OpenAIModel(api_key=api_key, validation_class=Classification)
classifier = TextClassifier(api_key=api_key, llm=model, validation_class=Classification)

# Clasificar texto
result = classifier.classify("Tu texto aquí")
```

## Contribución

Las contribuciones son bienvenidas. Por favor, abre un issue para discutir los cambios importantes que te gustaría hacer.
