Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Sonika LangChain Bot PyPI Downloads

A Python library that implements a conversational agent using LangChain with tool execution capabilities and text classification.

Installation

pip install sonika-langchain-bot

Prerequisites

You'll need the following API keys:

  • OpenAI API Key

Create a .env file in the root of your project with the following variables:

OPENAI_API_KEY=your_api_key_here

Key Features

  • Conversational agent with tool execution capabilities
  • Text classification with structured output
  • Custom tool integration
  • Streaming responses
  • Conversation history management
  • Flexible instruction-based behavior

Basic Usage

Agent with Tools Example

import os
from dotenv import load_dotenv
from langchain_openai import OpenAIEmbeddings
from sonika_langchain_bot.langchain_tools import EmailTool
from sonika_langchain_bot.langchain_bot_agent import LangChainBot
from sonika_langchain_bot.langchain_class import Message, ResponseModel
from sonika_langchain_bot.langchain_models import OpenAILanguageModel

# Load environment variables
load_dotenv()

# Get API key from .env file
api_key = os.getenv("OPENAI_API_KEY")

# Initialize language model and embeddings
language_model = OpenAILanguageModel(api_key, model_name='gpt-4o-mini-2024-07-18', temperature=1)
embeddings = OpenAIEmbeddings(api_key=api_key)

# Configure tools
tools = [EmailTool()]

# Create agent instance
bot = LangChainBot(language_model, embeddings, instructions="You are an agent", tools=tools)

# Load conversation history
bot.load_conversation_history([Message(content="My name is Erley", is_bot=False)])

# Get response
user_message = 'Send an email with the tool to erley@gmail.com with subject Hello and message Hello Erley'
response_model: ResponseModel = bot.get_response(user_message)

print(response_model)

Streaming Response Example

import os
from dotenv import load_dotenv
from langchain_openai import OpenAIEmbeddings
from sonika_langchain_bot.langchain_bot_agent import LangChainBot
from sonika_langchain_bot.langchain_class import Message
from sonika_langchain_bot.langchain_models import OpenAILanguageModel

# Load environment variables
load_dotenv()

# Get API key from .env file
api_key = os.getenv("OPENAI_API_KEY")

# Initialize language model and embeddings
language_model = OpenAILanguageModel(api_key, model_name='gpt-4o-mini-2024-07-18', temperature=1)
embeddings = OpenAIEmbeddings(api_key=api_key)

# Create agent instance
bot = LangChainBot(language_model, embeddings, instructions="Only answers in english", tools=[])

# Load conversation history
bot.load_conversation_history([Message(content="My name is Erley", is_bot=False)])

# Get streaming response
user_message = 'Hello, what is my name?'
for chunk in bot.get_response_stream(user_message):
    print(chunk)

Text Classification Example

import os
from dotenv import load_dotenv
from sonika_langchain_bot.langchain_clasificator import TextClassifier
from sonika_langchain_bot.langchain_models import OpenAILanguageModel
from pydantic import BaseModel, Field

# Load environment variables
load_dotenv()

# Define classification structure with Pydantic
class Classification(BaseModel):
    intention: str = Field()
    sentiment: str = Field(..., enum=["happy", "neutral", "sad", "excited"])
    aggressiveness: int = Field(
        ...,
        description="describes how aggressive the statement is, the higher the number the more aggressive",
        enum=[1, 2, 3, 4, 5],
    )
    language: str = Field(
        ..., enum=["spanish", "english", "french", "german", "italian"]
    )

# Initialize classifier
api_key = os.getenv("OPENAI_API_KEY")
model = OpenAILanguageModel(api_key=api_key)
classifier = TextClassifier(llm=model, validation_class=Classification)

# Classify text
result = classifier.classify("how are you?")
print(result)

Available Classes and Components

Core Classes

  • LangChainBot: Main conversational agent for task execution with tools
  • OpenAILanguageModel: Wrapper for OpenAI language models
  • TextClassifier: Text classification using structured output
  • Message: Message structure for conversation history
  • ResponseModel: Response structure from agent interactions

Tools

  • EmailTool: Tool for sending emails through the agent

Project Structure

your_project/
├── .env                    # Environment variables
├── src/
│   └── sonika_langchain_bot/
│       ├── langchain_bot_agent.py
│       ├── langchain_clasificator.py
│       ├── langchain_class.py
│       ├── langchain_models.py
│       └── langchain_tools.py
└── tests/
    └── test_bot.py

Contributing

Contributions are welcome. Please open an issue to discuss major changes you'd like to make.

License

This project is licensed under the MIT License.

Metadata

Release files for sonika-langchain-bot 0.0.61

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sonika-langchain-bot 0.0.61
File Size Uploaded
sonika_langchain_bot-0.0.61.tar.gz 80.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sonika-langchain-bot 0.0.61
File Interpreter ABI Platform
sonika_langchain_bot-0.0.61-py3-none-any.whl Python 3 none any Details

Total release size: 185.8 kB

Release files / sonika_langchain_bot-0.0.61.tar.gz

Download URL sonika_langchain_bot-0.0.61.tar.gz
Size 80.1 kB
Tags Source
SHA-256 checksum
How to use checksums
077f48ba6e493a9464e109e43e2b88ecf893b422f0fecaa828f3474ba95ec20c
BLAKE2b-256 checksum
How to use checksums
b35da83eacc4c949d32cf17258c9e00e9807b6bdc7323feb177f502cb8d68114
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release files / sonika_langchain_bot-0.0.61-py3-none-any.whl

Download URL sonika_langchain_bot-0.0.61-py3-none-any.whl
Size 105.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89a166df0ff7ddab98f0a80e179d44d35d1ffcc0f337437cb68137df42d0acbe
BLAKE2b-256 checksum
How to use checksums
ed496f5c6504575a864fbd3f5f08914898c563c828cdf801fb9e256074d2ec27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.0.61 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page