Skip to content

Commit 3e531b8

Browse files
authored
Merge pull request #9 from dosaboy/fix-pkg
Changes for packaging and unit-tests
2 parents 53b6d63 + 529bbae commit 3e531b8

35 files changed

+74
-85
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.tox

pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ dependencies = [
2525
"transformers",
2626
]
2727

28+
[tool.flit.module]
29+
name = "support_ai"
30+
2831
[project.scripts]
2932
ai-bot = "support_ai.ai_bot:main"
3033
ds-updater = "support_ai.ds_updater:main"
File renamed without changes.

src/support_ai/ai_bot.py renamed to support_ai/ai_bot.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import argparse
66
import uuid
77

8-
from .lib.chain import Chain
9-
from .utils import get_config
8+
from support_ai.lib.chain import Chain
9+
from support_ai.utils import get_config
1010

1111

1212
def parse_args():

src/support_ai/api_server.py renamed to support_ai/api_server.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
"""
22
Support-AI API Server
33
"""
4-
54
import argparse
65

76
from flask import Blueprint, Flask, jsonify, request, Response
87
from flask_restful import Api, Resource
9-
10-
from .lib import const
11-
from .lib.chain import Chain
12-
from .utils import get_config
13-
8+
from support_ai.lib import const
9+
from support_ai.lib.chain import Chain
10+
from support_ai.utils import get_config
1411

1512
app = Flask(__name__)
1613
chain = None # pylint: disable=invalid-name
File renamed without changes.

src/support_ai/ds_updater.py renamed to support_ai/ds_updater.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import sys
88
import time
99

10-
from .lib.datasources.ds_updater import DSUpdater
11-
from .utils import get_config
10+
from support_ai.lib.datasources.ds_updater import DSUpdater
11+
from support_ai.utils import get_config
1212

1313

1414
def parse_args():

src/support_ai/lib/chain.py renamed to support_ai/lib/chain.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
Chain Module for Processing Queries with Context and Memory
33
"""
44

5-
from . import const
6-
from .context import BaseContext
7-
from .datasources.ds_querier import DSQuerier
8-
from .memory import Memory
5+
from support_ai.lib import const
6+
from support_ai.lib.context import BaseContext
7+
from support_ai.lib.datasources.ds_querier import DSQuerier
8+
from support_ai.lib.memory import Memory
99

1010

1111
class Chain(BaseContext):
File renamed without changes.

src/support_ai/lib/context.py renamed to support_ai/lib/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
a ModelManager instance.
55
"""
66

7-
from .model_manager.model_manager import ModelManager
7+
from support_ai.lib.model_manager.model_manager import ModelManager
88

99

1010
class BaseContext: # pylint: disable=too-few-public-methods

src/support_ai/lib/datasources/ds_querier.py renamed to support_ai/lib/datasources/ds_querier.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@
33
querying different data sources based on the provided configuration
44
and user queries.
55
"""
6-
76
from langchain_core.prompts import PromptTemplate
87
from langchain_core.output_parsers import StrOutputParser
98
from langchain_core.runnables import RunnablePassthrough
10-
11-
from .. import const
12-
from ..context import BaseContext
13-
from ..vectorstore import VectorStore
14-
from .utils import get_datasources
9+
from support_ai.lib import const
10+
from support_ai.lib.context import BaseContext
11+
from support_ai.lib.vectorstore import VectorStore
12+
from support_ai.lib.datasources.utils import get_datasources
1513

1614

1715
CLASSIFICATION_PROMPT = """

src/support_ai/lib/datasources/ds_updater.py renamed to support_ai/lib/datasources/ds_updater.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
import threading
88
from datetime import datetime, timedelta
99

10-
from ..const import META_DIR
11-
from ..context import BaseContext
12-
from ..vectorstore import VectorStore
13-
from .utils import get_datasources
10+
from support_ai.lib.const import META_DIR
11+
from support_ai.lib.context import BaseContext
12+
from support_ai.lib.vectorstore import VectorStore
13+
from support_ai.lib.datasources.utils import get_datasources
1414

1515

1616
UPDATE_TIME = META_DIR + 'update_time'

src/support_ai/lib/datasources/kb.py renamed to support_ai/lib/datasources/kb.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,17 @@
22
This module provides functionality for interacting with a Salesforce
33
Knowledge Base,
44
"""
5-
65
from html.parser import HTMLParser
76
from io import StringIO
87

98
import simple_salesforce
109
from langchain_core.prompts import PromptTemplate
1110
from langchain_core.output_parsers import StrOutputParser
1211
from langchain_core.runnables import RunnablePassthrough
13-
14-
from .. import const
15-
from ..context import BaseContext
16-
from ..utils.lru import timed_lru_cache
17-
from .ds import Data, Content, Datasource
12+
from support_ai.lib import const
13+
from support_ai.lib.context import BaseContext
14+
from support_ai.lib.utils.lru import timed_lru_cache
15+
from support_ai.lib.datasources.ds import Data, Content, Datasource
1816

1917

2018
QUESTIONS_PROMPT = """

src/support_ai/lib/datasources/salesforce.py renamed to support_ai/lib/datasources/salesforce.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
from langchain_core.output_parsers import StrOutputParser
1111
from langchain_core.runnables import RunnablePassthrough
1212
from langchain_text_splitters import RecursiveCharacterTextSplitter
13-
14-
from .. import const
15-
from ..context import BaseContext
16-
from ..utils.docs_chain import docs_refine
17-
from ..utils.lru import timed_lru_cache
18-
from ..utils.parallel_executor import run_fn_in_parallel, run_in_parallel
19-
from .ds import Data, Content, Datasource
13+
from support_ai.lib import const
14+
from support_ai.lib.context import BaseContext
15+
from support_ai.lib.utils.docs_chain import docs_refine
16+
from support_ai.lib.utils.lru import timed_lru_cache
17+
from support_ai.lib.utils.parallel_executor import (
18+
run_fn_in_parallel,
19+
run_in_parallel,
20+
)
21+
from support_ai.lib.datasources.ds import Data, Content, Datasource
2022

2123

2224
SYMPTOM_INITIAL_PROMPT = """Summarize symptom of the following content:

src/support_ai/lib/datasources/utils.py renamed to support_ai/lib/datasources/utils.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
This module provides functionality to retrieve and instantiate data sources
33
based on the configuration provided.
44
"""
5-
6-
from .. import const
7-
from .kb import KnowledgeBaseSource
8-
from .salesforce import SalesforceSource
5+
from support_ai.lib import const
6+
from support_ai.lib.datasources.kb import KnowledgeBaseSource
7+
from support_ai.lib.datasources.salesforce import SalesforceSource
98

109
_ds_mapping: dict = {
1110
const.CONFIG_SF: SalesforceSource,

src/support_ai/lib/memory.py renamed to support_ai/lib/memory.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
This module provides a memory management class that stores and retrieves
33
conversation history in a MongoDB database.
44
"""
5-
65
from operator import itemgetter
76
from threading import Lock
87

@@ -13,8 +12,7 @@
1312
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
1413
from langchain_core.output_parsers import StrOutputParser
1514
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
16-
17-
from . import const
15+
from support_ai.lib import const
1816

1917

2018
class Memory:

support_ai/lib/model_manager/__init__.py

Whitespace-only changes.

src/support_ai/lib/model_manager/huggingface_factory.py renamed to support_ai/lib/model_manager/huggingface_factory.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
This module provides a factory for creating Hugging Face-based
33
language models and embeddings.
44
"""
5-
65
from langchain_community.llms import HuggingFacePipeline
76
from langchain_community.embeddings import HuggingFaceEmbeddings
8-
9-
from .. import const
10-
from .model_factory import ModelFactory
7+
from support_ai.lib import const
8+
from support_ai.lib.model_manager.model_factory import ModelFactory
119

1210

1311
class HuggingFaceFactory(ModelFactory):

src/support_ai/lib/model_manager/llamacpp_factory.py renamed to support_ai/lib/model_manager/llamacpp_factory.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
This module provides a factory for creating LlamaCpp-based language models
44
and embeddings.
55
"""
6-
76
from langchain_community.llms import LlamaCpp
87
from langchain_community.embeddings import LlamaCppEmbeddings
9-
10-
from .. import const
11-
from .model_factory import ModelFactory
8+
from support_ai.lib import const
9+
from support_ai.lib.model_manager.model_factory import ModelFactory
1210

1311

1412
class LlamaCppFactory(ModelFactory):

src/support_ai/lib/model_manager/model_manager.py renamed to support_ai/lib/model_manager/model_manager.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@
22
This module defines functionality for managing language models and
33
embeddings configurations.
44
"""
5-
65
from dataclasses import dataclass
76

87
from langchain_core.embeddings import Embeddings
98
from langchain_core.language_models.llms import BaseLLM
10-
11-
from .. import const
12-
from .huggingface_factory import HuggingFaceFactory
13-
from .llamacpp_factory import LlamaCppFactory
14-
from .ollama_factory import OllamaFactory
15-
from .openai_factory import OpenAIFactory
16-
from .remote_factory import RemoteFactory
9+
from support_ai.lib import const
10+
from support_ai.lib.model_manager.huggingface_factory import HuggingFaceFactory
11+
from support_ai.lib.model_manager.llamacpp_factory import LlamaCppFactory
12+
from support_ai.lib.model_manager.ollama_factory import OllamaFactory
13+
from support_ai.lib.model_manager.openai_factory import OpenAIFactory
14+
from support_ai.lib.model_manager.remote_factory import RemoteFactory
1715

1816

1917
LLM_CONFIG = 'llm_config'

src/support_ai/lib/model_manager/ollama_factory.py renamed to support_ai/lib/model_manager/ollama_factory.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
This module provides a factory for creating Ollama-based chat models
33
and embeddings.
44
"""
5-
65
from langchain_community.chat_models import ChatOllama
76
from langchain_community.embeddings import OllamaEmbeddings
8-
9-
from .. import const
10-
from .model_factory import ModelFactory
7+
from support_ai.lib import const
8+
from support_ai.lib.model_manager.model_factory import ModelFactory
119

1210

1311
class OllamaFactory(ModelFactory):

src/support_ai/lib/model_manager/openai_factory.py renamed to support_ai/lib/model_manager/openai_factory.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
This module provides the OpenAIFactory class, which is a factory for creating
33
OpenAI language models and embeddings based on configuration settings.
44
"""
5-
65
from langchain_community.llms import OpenAI
76
from langchain_community.embeddings import OpenAIEmbeddings
8-
9-
from .. import const
10-
from .model_factory import ModelFactory
7+
from support_ai.lib import const
8+
from support_ai.lib.model_manager.model_factory import ModelFactory
119

1210

1311
class OpenAIFactory(ModelFactory):

src/support_ai/lib/model_manager/remote_factory.py renamed to support_ai/lib/model_manager/remote_factory.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
This module contains classes for interacting with remote language models and
33
embeddings via HTTP requests.
44
"""
5-
65
import json
76
from typing import Any, List, Mapping, Optional
87

@@ -11,9 +10,8 @@
1110
from langchain_core.embeddings import Embeddings
1211
from langchain_core.language_models.llms import LLM
1312
from pydantic import BaseModel
14-
15-
from .. import const
16-
from .model_factory import ModelFactory
13+
from support_ai.lib import const
14+
from support_ai.lib.model_manager.model_factory import ModelFactory
1715

1816

1917
class RemoteLLM(LLM):
File renamed without changes.
File renamed without changes.

src/support_ai/lib/vectorstore.py renamed to support_ai/lib/vectorstore.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import os
66

77
from langchain_community.vectorstores import Chroma
8-
9-
from . import const
8+
from support_ai.lib import const
109

1110
VECTORDB_DIR = const.META_DIR + 'vectordb'
1211
COLLECTION_METADATA = 'collection_metadata'

src/support_ai/utils.py renamed to support_ai/utils.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import pkgutil
66

77
import yaml
8-
9-
from .lib import const
8+
from support_ai.lib import const
109

1110

1211
def get_config(path):
File renamed without changes.

tests/unit/test_supportai.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
""" SupportAI Unit Tests """
22
import unittest
3+
from unittest import mock
4+
5+
from support_ai import ai_bot
6+
7+
# pylint: disable=no-self-use
38

49

510
class TestSupportAI(unittest.TestCase):
611
""" Unit Tests for Support AI. """
7-
def setUp(self) -> None:
8-
pass
9-
10-
def tearDown(self):
11-
pass
1212

13-
def test_ai_bot(self):
13+
@mock.patch('support_ai.ai_bot.input')
14+
@mock.patch.object(ai_bot, 'parse_args')
15+
@mock.patch.object(ai_bot, 'get_config')
16+
@mock.patch.object(ai_bot, 'Chain')
17+
def test_ai_bot_quit(self, _mock_chain, _mock_get_config, _mock_parse_args,
18+
mock_input):
1419
"""
15-
THIS IS A PLACEHOLDER TEST UNTIL WE GET SOME REAL TESTS IMPLEMENTED.
20+
Test api bot quit.
1621
"""
22+
mock_input.return_value = 'quit'
23+
ai_bot.main()

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import-order-style = pep8
2020
basepython = {env:TOX_PYTHON:python3}
2121
unit_tests = {toxinidir}/tests/unit/
2222
pyfiles =
23-
{toxinidir}/src/support_ai {[testenv]unit_tests}
23+
{toxinidir}/support_ai {[testenv]unit_tests}
2424
setenv =
2525
PYTHONHASHSEED=0
2626
deps =

0 commit comments

Comments
 (0)