Skip to content

Commit

Permalink
Merge pull request #9 from dosaboy/fix-pkg
Browse files Browse the repository at this point in the history
Changes for packaging and unit-tests
  • Loading branch information
yukariatlas authored Oct 31, 2024
2 parents 53b6d63 + 529bbae commit 3e531b8
Show file tree
Hide file tree
Showing 35 changed files with 74 additions and 85 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.tox
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ dependencies = [
"transformers",
]

[tool.flit.module]
name = "support_ai"

[project.scripts]
ai-bot = "support_ai.ai_bot:main"
ds-updater = "support_ai.ds_updater:main"
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions src/support_ai/ai_bot.py → support_ai/ai_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import argparse
import uuid

from .lib.chain import Chain
from .utils import get_config
from support_ai.lib.chain import Chain
from support_ai.utils import get_config


def parse_args():
Expand Down
9 changes: 3 additions & 6 deletions src/support_ai/api_server.py → support_ai/api_server.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
"""
Support-AI API Server
"""

import argparse

from flask import Blueprint, Flask, jsonify, request, Response
from flask_restful import Api, Resource

from .lib import const
from .lib.chain import Chain
from .utils import get_config

from support_ai.lib import const
from support_ai.lib.chain import Chain
from support_ai.utils import get_config

app = Flask(__name__)
chain = None # pylint: disable=invalid-name
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions src/support_ai/ds_updater.py → support_ai/ds_updater.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import sys
import time

from .lib.datasources.ds_updater import DSUpdater
from .utils import get_config
from support_ai.lib.datasources.ds_updater import DSUpdater
from support_ai.utils import get_config


def parse_args():
Expand Down
8 changes: 4 additions & 4 deletions src/support_ai/lib/chain.py → support_ai/lib/chain.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
Chain Module for Processing Queries with Context and Memory
"""

from . import const
from .context import BaseContext
from .datasources.ds_querier import DSQuerier
from .memory import Memory
from support_ai.lib import const
from support_ai.lib.context import BaseContext
from support_ai.lib.datasources.ds_querier import DSQuerier
from support_ai.lib.memory import Memory


class Chain(BaseContext):
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
a ModelManager instance.
"""

from .model_manager.model_manager import ModelManager
from support_ai.lib.model_manager.model_manager import ModelManager


class BaseContext: # pylint: disable=too-few-public-methods
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@
querying different data sources based on the provided configuration
and user queries.
"""

from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

from .. import const
from ..context import BaseContext
from ..vectorstore import VectorStore
from .utils import get_datasources
from support_ai.lib import const
from support_ai.lib.context import BaseContext
from support_ai.lib.vectorstore import VectorStore
from support_ai.lib.datasources.utils import get_datasources


CLASSIFICATION_PROMPT = """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import threading
from datetime import datetime, timedelta

from ..const import META_DIR
from ..context import BaseContext
from ..vectorstore import VectorStore
from .utils import get_datasources
from support_ai.lib.const import META_DIR
from support_ai.lib.context import BaseContext
from support_ai.lib.vectorstore import VectorStore
from support_ai.lib.datasources.utils import get_datasources


UPDATE_TIME = META_DIR + 'update_time'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,17 @@
This module provides functionality for interacting with a Salesforce
Knowledge Base,
"""

from html.parser import HTMLParser
from io import StringIO

import simple_salesforce
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

from .. import const
from ..context import BaseContext
from ..utils.lru import timed_lru_cache
from .ds import Data, Content, Datasource
from support_ai.lib import const
from support_ai.lib.context import BaseContext
from support_ai.lib.utils.lru import timed_lru_cache
from support_ai.lib.datasources.ds import Data, Content, Datasource


QUESTIONS_PROMPT = """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_text_splitters import RecursiveCharacterTextSplitter

from .. import const
from ..context import BaseContext
from ..utils.docs_chain import docs_refine
from ..utils.lru import timed_lru_cache
from ..utils.parallel_executor import run_fn_in_parallel, run_in_parallel
from .ds import Data, Content, Datasource
from support_ai.lib import const
from support_ai.lib.context import BaseContext
from support_ai.lib.utils.docs_chain import docs_refine
from support_ai.lib.utils.lru import timed_lru_cache
from support_ai.lib.utils.parallel_executor import (
run_fn_in_parallel,
run_in_parallel,
)
from support_ai.lib.datasources.ds import Data, Content, Datasource


SYMPTOM_INITIAL_PROMPT = """Summarize symptom of the following content:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
This module provides functionality to retrieve and instantiate data sources
based on the configuration provided.
"""

from .. import const
from .kb import KnowledgeBaseSource
from .salesforce import SalesforceSource
from support_ai.lib import const
from support_ai.lib.datasources.kb import KnowledgeBaseSource
from support_ai.lib.datasources.salesforce import SalesforceSource

_ds_mapping: dict = {
const.CONFIG_SF: SalesforceSource,
Expand Down
4 changes: 1 addition & 3 deletions src/support_ai/lib/memory.py → support_ai/lib/memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
This module provides a memory management class that stores and retrieves
conversation history in a MongoDB database.
"""

from operator import itemgetter
from threading import Lock

Expand All @@ -13,8 +12,7 @@
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableLambda, RunnablePassthrough

from . import const
from support_ai.lib import const


class Memory:
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
This module provides a factory for creating Hugging Face-based
language models and embeddings.
"""

from langchain_community.llms import HuggingFacePipeline
from langchain_community.embeddings import HuggingFaceEmbeddings

from .. import const
from .model_factory import ModelFactory
from support_ai.lib import const
from support_ai.lib.model_manager.model_factory import ModelFactory


class HuggingFaceFactory(ModelFactory):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@
This module provides a factory for creating LlamaCpp-based language models
and embeddings.
"""

from langchain_community.llms import LlamaCpp
from langchain_community.embeddings import LlamaCppEmbeddings

from .. import const
from .model_factory import ModelFactory
from support_ai.lib import const
from support_ai.lib.model_manager.model_factory import ModelFactory


class LlamaCppFactory(ModelFactory):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,16 @@
This module defines functionality for managing language models and
embeddings configurations.
"""

from dataclasses import dataclass

from langchain_core.embeddings import Embeddings
from langchain_core.language_models.llms import BaseLLM

from .. import const
from .huggingface_factory import HuggingFaceFactory
from .llamacpp_factory import LlamaCppFactory
from .ollama_factory import OllamaFactory
from .openai_factory import OpenAIFactory
from .remote_factory import RemoteFactory
from support_ai.lib import const
from support_ai.lib.model_manager.huggingface_factory import HuggingFaceFactory
from support_ai.lib.model_manager.llamacpp_factory import LlamaCppFactory
from support_ai.lib.model_manager.ollama_factory import OllamaFactory
from support_ai.lib.model_manager.openai_factory import OpenAIFactory
from support_ai.lib.model_manager.remote_factory import RemoteFactory


LLM_CONFIG = 'llm_config'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
This module provides a factory for creating Ollama-based chat models
and embeddings.
"""

from langchain_community.chat_models import ChatOllama
from langchain_community.embeddings import OllamaEmbeddings

from .. import const
from .model_factory import ModelFactory
from support_ai.lib import const
from support_ai.lib.model_manager.model_factory import ModelFactory


class OllamaFactory(ModelFactory):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
This module provides the OpenAIFactory class, which is a factory for creating
OpenAI language models and embeddings based on configuration settings.
"""

from langchain_community.llms import OpenAI
from langchain_community.embeddings import OpenAIEmbeddings

from .. import const
from .model_factory import ModelFactory
from support_ai.lib import const
from support_ai.lib.model_manager.model_factory import ModelFactory


class OpenAIFactory(ModelFactory):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
This module contains classes for interacting with remote language models and
embeddings via HTTP requests.
"""

import json
from typing import Any, List, Mapping, Optional

Expand All @@ -11,9 +10,8 @@
from langchain_core.embeddings import Embeddings
from langchain_core.language_models.llms import LLM
from pydantic import BaseModel

from .. import const
from .model_factory import ModelFactory
from support_ai.lib import const
from support_ai.lib.model_manager.model_factory import ModelFactory


class RemoteLLM(LLM):
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
import os

from langchain_community.vectorstores import Chroma

from . import const
from support_ai.lib import const

VECTORDB_DIR = const.META_DIR + 'vectordb'
COLLECTION_METADATA = 'collection_metadata'
Expand Down
3 changes: 1 addition & 2 deletions src/support_ai/utils.py → support_ai/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
import pkgutil

import yaml

from .lib import const
from support_ai.lib import const


def get_config(path):
Expand Down
File renamed without changes.
21 changes: 14 additions & 7 deletions tests/unit/test_supportai.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
""" SupportAI Unit Tests """
import unittest
from unittest import mock

from support_ai import ai_bot

# pylint: disable=no-self-use


class TestSupportAI(unittest.TestCase):
""" Unit Tests for Support AI. """
def setUp(self) -> None:
pass

def tearDown(self):
pass

def test_ai_bot(self):
@mock.patch('support_ai.ai_bot.input')
@mock.patch.object(ai_bot, 'parse_args')
@mock.patch.object(ai_bot, 'get_config')
@mock.patch.object(ai_bot, 'Chain')
def test_ai_bot_quit(self, _mock_chain, _mock_get_config, _mock_parse_args,
mock_input):
"""
THIS IS A PLACEHOLDER TEST UNTIL WE GET SOME REAL TESTS IMPLEMENTED.
Test api bot quit.
"""
mock_input.return_value = 'quit'
ai_bot.main()
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import-order-style = pep8
basepython = {env:TOX_PYTHON:python3}
unit_tests = {toxinidir}/tests/unit/
pyfiles =
{toxinidir}/src/support_ai {[testenv]unit_tests}
{toxinidir}/support_ai {[testenv]unit_tests}
setenv =
PYTHONHASHSEED=0
deps =
Expand Down

0 comments on commit 3e531b8

Please sign in to comment.