semvec/pypi-packages huggingface dataset:
ui4ai 0.1.0
Streamlit UI for LLM chat apps
Requires Python: >=3.7

A simple, lightweight, and plug-and-play Streamlit-based UI for LLM chatbot applications.

---

## 🚀 Features

- Plug in your own `generate_response` function  
- Built-in sidebar history and session management  
- Optional extras:
  - Title generation
  - Token counting
  - Max history control

![Chat Example](images/table001.png)

---

## 📦 Installation

```bash
  pip install UI4AI
```

---

## 🧠 Basic Usage

```python
from UI4AI import run_chat
import openai

# Set your OpenAI API key
openai.api_key = "<YOUR_API_KEY>"

# Define how the chatbot generates responses
def generate_response(messages) -> str:
    try:
        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=messages,
            temperature=0.7
        )
        return response.choices[0].message.content
    except Exception as e:
        raise RuntimeError(f"Response generation failed: {str(e)}")

# Launch the chat app
run_chat(
    generate_response=generate_response,
    title="My Chatbot",
    sidebar=True,
    session_state=True,
    token_counting=True
)
```

---

## ▶️ Running the App

```bash
  streamlit run app.py  # Or replace with your own script name
```

---

## 🎨 Customization Options

You can customize the UI with these optional parameters:

```python
run_chat(
    generate_response: Callable[[List[Dict]], str],
    page_title: str = "AI Chat", 
    title: str = "Conversational Bot",
    layout: str = "wide",
    new_conversation: str = "➕ New Chat",
    chat_placeholder: str = "Ask me anything...",
    sidebar_instructions: str = "Conversation History",
    spinner_text: str = "Thinking...",
)
```

---

## 🔧 Additional Features

### 🧠 Title Generation  
Automatically generates a conversation title.  
![Title Generation](images/sample_title.png)

### 🔢 Token Counting  
Displays the total token count used in the conversation.  
![Token Counting](images/sample_title_with_tokens.png)

### 🕒 Customizable Max History  
Control how many messages are remembered in the chat history.  
![Max History](images/max_history.png)  
> For example, if you first ask “Who is Spider-Man?” When you later ask “Name all his movies?”, it assumes “his” means Spider-Man this is because of history.

### 📚 Sidebar History  
View and click through previous conversation threads in the sidebar.  
![Session History](images/sample_session.png)

### 💾 Persistent Sessions  
Your chat history persists even after refreshing the page. You can return and continue where you left off!  
![Session Persistence](images/sample_session.png)
linear-nonlinear-solver 0.1.0
Una librería para resolver sistemas de ecuaciones lineales y no lineales.
Requires Python: >=3.6

# Proyecto de ResoluciÃ³n de Sistemas de Ecuaciones Lineales y No Lineales
        
        Este proyecto proporciona una librerÃ­a en Python para resolver sistemas de ecuaciones lineales y no lineales utilizando varios mÃ©todos numÃ©ricos. La librerÃ­a incluye implementaciones de los mÃ©todos de eliminaciÃ³n de Gauss, Gauss-Jordan, Cramer, descomposiciÃ³n LU, Jacobi, Gauss-Seidel y bisecciÃ³n.
        
        ## MÃ©todos Implementados
        
        - **EliminaciÃ³n de Gauss**: Resuelve sistemas de ecuaciones lineales mediante la eliminaciÃ³n de variables.
        - **Gauss-Jordan**: ExtensiÃ³n del mÃ©todo de Gauss que transforma la matriz en su forma reducida.
        - **Cramer**: Utiliza determinantes para resolver sistemas de ecuaciones lineales.
        - **DescomposiciÃ³n LU**: Descompone una matriz en el producto de una matriz triangular inferior y una matriz triangular superior.
        - **MÃ©todo de Jacobi**: Un mÃ©todo iterativo para encontrar soluciones de sistemas de ecuaciones lineales.
        - **MÃ©todo de Gauss-Seidel**: Otro mÃ©todo iterativo que mejora la convergencia respecto al mÃ©todo de Jacobi.
        - **BisecciÃ³n**: Encuentra raÃ­ces de funciones no lineales en un intervalo dado.
        
        ## InstalaciÃ³n
        
        Para instalar la librerÃ­a, usar `pip`:
        
        ```
        pip install linear-nonlinear-solver
        ```
        
        ## Uso
        
        A continuaciÃ³n se presentan ejemplos de cÃ³mo utilizar algunos de los mÃ©todos disponibles en la librerÃ­a:
        
        ### Ejemplo de EliminaciÃ³n de Gauss
        
        ```python
        from linear_nonlinear_solver.gauss import eliminar_gauss
        
        # Definir la matriz de coeficientes y el vector de tÃ©rminos independientes
        A = [[3, 2, -4], [2, 3, 3], [5, -3, 1]]
        b = [3, 15, 14]
        
        # Resolver el sistema
        solucion = eliminar_gauss(A, b)
        print(solucion)
        ```
        
        ### Ejemplo de BisecciÃ³n
        
        ```python
        from linear_nonlinear_solver.bisection import biseccion
        
        # Definir la funciÃ³n y el intervalo
        def f(x):
            return x**3 - x - 2
        
        # Encontrar la raÃ­z
        raiz = biseccion(f, 1, 2)
        print(raiz)
        ```
        
        ## Pruebas
        
        El proyecto incluye pruebas unitarias para cada uno de los mÃ©todos implementados. Puedes ejecutar las pruebas utilizando `pytest`:
        
        ```
        pytest tests/
        ```
        
        ## Licencia
        
        Este proyecto estÃ¡ licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para mÃ¡s detalles.