diff --git a/internet_ml/NLP/no_context/QA.py b/internet_ml/NLP/no_context/QA.py index 50ffc45..92b7d5e 100644 --- a/internet_ml/NLP/no_context/QA.py +++ b/internet_ml/NLP/no_context/QA.py @@ -23,10 +23,12 @@ import config import internet -def answer(query: str) -> tuple[Any, list[str]]: +def answer( + query: str, GOOGLE_SEARCH_API_KEY: str, GOOGLE_SEARCH_ENGINE_ID: str +) -> tuple[Any, list[str]]: QA_MODEL: Any = pipeline("question-answering") - GOOGLE_SEARCH_API_KEY = str(os.environ["INTERNET_ML_GOOGLE_API"]) - GOOGLE_SEARCH_ENGINE_ID = str(os.environ["INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID"]) + # GOOGLE_SEARCH_API_KEY = str(os.getenv("INTERNET_ML_GOOGLE_API")) + # GOOGLE_SEARCH_ENGINE_ID = str(os.getenv("INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID")) results: tuple[list[str], list[str]] = internet.Google( query, GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID ).google() diff --git a/pyproject.toml b/pyproject.toml index d585e85..b600e19 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "internet-ml" -version = "1.0.1" +version = "1.0.6" description = "Internet-ML: Allowing ML to connect to the internet" readme = "./.github/README.md" authors = ["Thamognya Kodi "] diff --git a/web/internet_ml_server/api/question_answer/__init__.py b/web/internet_ml_server/api/nlp/__init__.py similarity index 100% rename from web/internet_ml_server/api/question_answer/__init__.py rename to web/internet_ml_server/api/nlp/__init__.py diff --git a/web/internet_ml_server/api/question_answer/admin.py b/web/internet_ml_server/api/nlp/admin.py similarity index 100% rename from web/internet_ml_server/api/question_answer/admin.py rename to web/internet_ml_server/api/nlp/admin.py diff --git a/web/internet_ml_server/api/question_answer/apps.py b/web/internet_ml_server/api/nlp/apps.py similarity index 56% rename from web/internet_ml_server/api/question_answer/apps.py rename to web/internet_ml_server/api/nlp/apps.py index 1e13b6e..3cb96b6 100644 --- a/web/internet_ml_server/api/question_answer/apps.py +++ b/web/internet_ml_server/api/nlp/apps.py @@ -1,6 +1,6 @@ from django.apps import AppConfig -class QuestionAnswerConfig(AppConfig): +class NlpConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" - name = "api.question_answer" + name = "api.nlp" diff --git a/web/internet_ml_server/api/question_answer/migrations/__init__.py b/web/internet_ml_server/api/nlp/context/__init__.py similarity index 100% rename from web/internet_ml_server/api/question_answer/migrations/__init__.py rename to web/internet_ml_server/api/nlp/context/__init__.py diff --git a/web/internet_ml_server/api/nlp/context/admin.py b/web/internet_ml_server/api/nlp/context/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/web/internet_ml_server/api/nlp/context/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/web/internet_ml_server/api/nlp/context/apps.py b/web/internet_ml_server/api/nlp/context/apps.py new file mode 100644 index 0000000..6e369de --- /dev/null +++ b/web/internet_ml_server/api/nlp/context/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ContextConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "api.nlp.context" diff --git a/web/internet_ml_server/api/nlp/context/migrations/__init__.py b/web/internet_ml_server/api/nlp/context/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web/internet_ml_server/api/question_answer/models.py b/web/internet_ml_server/api/nlp/context/models.py similarity index 100% rename from web/internet_ml_server/api/question_answer/models.py rename to web/internet_ml_server/api/nlp/context/models.py diff --git a/web/internet_ml_server/api/question_answer/tests.py b/web/internet_ml_server/api/nlp/context/tests.py similarity index 100% rename from web/internet_ml_server/api/question_answer/tests.py rename to web/internet_ml_server/api/nlp/context/tests.py diff --git a/web/internet_ml_server/api/nlp/context/urls.py b/web/internet_ml_server/api/nlp/context/urls.py new file mode 100644 index 0000000..e69de29 diff --git a/web/internet_ml_server/api/nlp/context/views.py b/web/internet_ml_server/api/nlp/context/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/web/internet_ml_server/api/nlp/context/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/web/internet_ml_server/api/nlp/migrations/__init__.py b/web/internet_ml_server/api/nlp/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web/internet_ml_server/api/nlp/models.py b/web/internet_ml_server/api/nlp/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/web/internet_ml_server/api/nlp/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/web/internet_ml_server/api/nlp/nocontext/__init__.py b/web/internet_ml_server/api/nlp/nocontext/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web/internet_ml_server/api/nlp/nocontext/admin.py b/web/internet_ml_server/api/nlp/nocontext/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/web/internet_ml_server/api/nlp/nocontext/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/web/internet_ml_server/api/nlp/nocontext/apps.py b/web/internet_ml_server/api/nlp/nocontext/apps.py new file mode 100644 index 0000000..c98bf9d --- /dev/null +++ b/web/internet_ml_server/api/nlp/nocontext/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class NocontextConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "api.nlp.nocontext" diff --git a/web/internet_ml_server/api/nlp/nocontext/migrations/__init__.py b/web/internet_ml_server/api/nlp/nocontext/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web/internet_ml_server/api/nlp/nocontext/models.py b/web/internet_ml_server/api/nlp/nocontext/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/web/internet_ml_server/api/nlp/nocontext/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/web/internet_ml_server/api/question_answer/templates/rest_framework/api.html b/web/internet_ml_server/api/nlp/nocontext/templates/rest_framework/api.html similarity index 100% rename from web/internet_ml_server/api/question_answer/templates/rest_framework/api.html rename to web/internet_ml_server/api/nlp/nocontext/templates/rest_framework/api.html diff --git a/web/internet_ml_server/api/nlp/nocontext/tests.py b/web/internet_ml_server/api/nlp/nocontext/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/web/internet_ml_server/api/nlp/nocontext/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web/internet_ml_server/api/nlp/nocontext/tools/__init__.py b/web/internet_ml_server/api/nlp/nocontext/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/web/internet_ml_server/api/nlp/nocontext/tools/question_answer.py b/web/internet_ml_server/api/nlp/nocontext/tools/question_answer.py new file mode 100644 index 0000000..008b5a2 --- /dev/null +++ b/web/internet_ml_server/api/nlp/nocontext/tools/question_answer.py @@ -0,0 +1,25 @@ +from typing import Any + +import json + +import internet_ml.NLP.no_context.QA + + +def QA( + query: str, INTERNET_ML_GOOGLE_API: str, INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID: str +) -> Any: + try: + answer = internet_ml.NLP.no_context.QA.answer( + query, INTERNET_ML_GOOGLE_API, INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID + ) + content = json.dumps( + {"error": "", "response": answer[0], "resources": answer[1]} + ) + except: + content = json.dumps( + {"error": "Google API key not present in .env or environment"} + ) + return content + + +# print(QA("Who is Elon Musk?")) diff --git a/web/internet_ml_server/api/question_answer/urls.py b/web/internet_ml_server/api/nlp/nocontext/urls.py similarity index 68% rename from web/internet_ml_server/api/question_answer/urls.py rename to web/internet_ml_server/api/nlp/nocontext/urls.py index ec1c027..33904b8 100644 --- a/web/internet_ml_server/api/question_answer/urls.py +++ b/web/internet_ml_server/api/nlp/nocontext/urls.py @@ -6,5 +6,5 @@ from django.urls import include, path from . import views urlpatterns: list[Any] = [ - path("", views.QAView.as_view()), + path("question-answering/", views.QAView.as_view(), name="nlp"), ] diff --git a/web/internet_ml_server/api/question_answer/views.py b/web/internet_ml_server/api/nlp/nocontext/views.py similarity index 57% rename from web/internet_ml_server/api/question_answer/views.py rename to web/internet_ml_server/api/nlp/nocontext/views.py index d96a616..93a0518 100644 --- a/web/internet_ml_server/api/question_answer/views.py +++ b/web/internet_ml_server/api/nlp/nocontext/views.py @@ -1,14 +1,15 @@ import json +import os -from django.views.generic.base import TemplateView from dotenv import load_dotenv from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView -from internet_ml.NLP.no_context import QA +from .tools import question_answer load_dotenv() +import internet_ml.NLP.no_context.QA class QAView(APIView): @@ -35,14 +36,12 @@ class QAView(APIView): } so check error if it exists first and then for other stuff """ - try: - answer = QA.answer(request.POST.get("question")) - content = json.dumps( - {"error": "", "response": answer[0], "resources": answer[1]} - ) - return Response(content, status=status.HTTP_200_OK) - except: - content = json.dumps( - {"error": "Google API key not present in .env or environment"} - ) - return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + answer = internet_ml.NLP.no_context.QA.answer( + request.POST.get("question"), + str(os.getenv("INTERNET_ML_GOOGLE_API")), + str(os.getenv("INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID")), + ) + content = json.dumps( + {"error": "", "response": answer[0], "resources": answer[1]} + ) + return content diff --git a/web/internet_ml_server/api/nlp/templates/index.api.nlp.dj.html b/web/internet_ml_server/api/nlp/templates/index.api.nlp.dj.html new file mode 100644 index 0000000..919576d --- /dev/null +++ b/web/internet_ml_server/api/nlp/templates/index.api.nlp.dj.html @@ -0,0 +1 @@ +nlp diff --git a/web/internet_ml_server/api/nlp/tests.py b/web/internet_ml_server/api/nlp/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/web/internet_ml_server/api/nlp/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web/internet_ml_server/api/nlp/urls.py b/web/internet_ml_server/api/nlp/urls.py new file mode 100644 index 0000000..f4f5887 --- /dev/null +++ b/web/internet_ml_server/api/nlp/urls.py @@ -0,0 +1,11 @@ +from typing import Any, List + +from django.contrib import admin +from django.urls import include, path + +from . import views + +urlpatterns: list[Any] = [ + path("", views.NLPView.as_view(), name="nlp"), + path("no-context/", include("api.nlp.nocontext.urls"), name="nlp no context api"), +] diff --git a/web/internet_ml_server/api/nlp/views.py b/web/internet_ml_server/api/nlp/views.py new file mode 100644 index 0000000..11181ec --- /dev/null +++ b/web/internet_ml_server/api/nlp/views.py @@ -0,0 +1,5 @@ +from django.views.generic.base import TemplateView + + +class NLPView(TemplateView): + template_name = "index.api.nlp.dj.html" diff --git a/web/internet_ml_server/api/templates/index.api.dj.html b/web/internet_ml_server/api/templates/index.api.dj.html index 5b8e1c4..eedd89b 100644 --- a/web/internet_ml_server/api/templates/index.api.dj.html +++ b/web/internet_ml_server/api/templates/index.api.dj.html @@ -1 +1 @@ -This is my api list +api diff --git a/web/internet_ml_server/api/urls.py b/web/internet_ml_server/api/urls.py index 213e9b6..ac3b354 100644 --- a/web/internet_ml_server/api/urls.py +++ b/web/internet_ml_server/api/urls.py @@ -6,6 +6,6 @@ from django.urls import include, path from . import views urlpatterns: list[Any] = [ - path("", views.ApiView.as_view()), - path("question-answer/", include("api.question_answer.urls")), + path("", views.APIView.as_view(), name="api"), + path("nlp/", include("api.nlp.urls"), name="nlp api"), ] diff --git a/web/internet_ml_server/api/views.py b/web/internet_ml_server/api/views.py index f9cfa05..6f4abe2 100644 --- a/web/internet_ml_server/api/views.py +++ b/web/internet_ml_server/api/views.py @@ -1,7 +1,5 @@ from django.views.generic.base import TemplateView -# Create your views here. - -class ApiView(TemplateView): +class APIView(TemplateView): template_name = "index.api.dj.html" diff --git a/web/internet_ml_server/internet_ml_server/settings.py b/web/internet_ml_server/internet_ml_server/settings.py index 765dbb2..d039225 100644 --- a/web/internet_ml_server/internet_ml_server/settings.py +++ b/web/internet_ml_server/internet_ml_server/settings.py @@ -42,7 +42,9 @@ INSTALLED_APPS: list[str] = [ "rest_framework", "internet_ml", "api", - "api.question_answer", + "api.nlp", + "api.nlp.context", + "api.nlp.nocontext", ] REST_FRAMEWORK = {"DEFAULT_METADATA_CLASS": "rest_framework.metadata.SimpleMetadata"} @@ -64,9 +66,11 @@ TEMPLATES: list[Any] = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [ - str(BASE_DIR) + "/api/templates", str(BASE_DIR) + "/internet_ml_server/templates", - str(BASE_DIR) + "/api/question_answer/templates", + str(BASE_DIR) + "/api/templates", + str(BASE_DIR) + "/api/nlp/templates", + str(BASE_DIR) + "/api/nlp/context/templates", + str(BASE_DIR) + "/api/nlp/nocontext/templates", ], "APP_DIRS": True, "OPTIONS": { diff --git a/web/internet_ml_server/internet_ml_server/urls.py b/web/internet_ml_server/internet_ml_server/urls.py index 473b282..07d3cbd 100644 --- a/web/internet_ml_server/internet_ml_server/urls.py +++ b/web/internet_ml_server/internet_ml_server/urls.py @@ -22,6 +22,6 @@ from . import views urlpatterns: list[Any] = [ # path("admin/", admin.site.urls), - path("", views.IndexView.as_view(), name="api"), + path("", views.IndexView.as_view(), name="index"), path("api/", include("api.urls"), name="api"), ] diff --git a/web/internet_ml_server/internet_ml_server/views.py b/web/internet_ml_server/internet_ml_server/views.py index acb3644..42363fa 100644 --- a/web/internet_ml_server/internet_ml_server/views.py +++ b/web/internet_ml_server/internet_ml_server/views.py @@ -1,7 +1,5 @@ from django.views.generic.base import TemplateView -# Create your views here. - class IndexView(TemplateView): template_name = "index.internet_ml_server.dj.html" diff --git a/web/internet_ml_server/poetry.lock b/web/internet_ml_server/poetry.lock index 1ff749d..f265288 100644 --- a/web/internet_ml_server/poetry.lock +++ b/web/internet_ml_server/poetry.lock @@ -36,6 +36,23 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""} argon2 = ["argon2-cffi (>=19.1.0)"] bcrypt = ["bcrypt"] +[[package]] +name = "django-environ" +version = "0.9.0" +description = "A package that allows you to utilize 12factor inspired environment variables to configure your Django application." +category = "main" +optional = false +python-versions = ">=3.4,<4" +files = [ + {file = "django-environ-0.9.0.tar.gz", hash = "sha256:bff5381533056328c9ac02f71790bd5bf1cea81b1beeb648f28b81c9e83e0a21"}, + {file = "django_environ-0.9.0-py2.py3-none-any.whl", hash = "sha256:f21a5ef8cc603da1870bbf9a09b7e5577ab5f6da451b843dbcc721a7bca6b3d9"}, +] + +[package.extras] +develop = ["coverage[toml] (>=5.0a4)", "furo (>=2021.8.17b43,<2021.9.0)", "pytest (>=4.6.11)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] +docs = ["furo (>=2021.8.17b43,<2021.9.0)", "sphinx (>=3.5.0)", "sphinx-notfound-page"] +testing = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)"] + [[package]] name = "django-stubs" version = "1.13.1" @@ -257,4 +274,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "58f95fa8d5dbf7be85c7a08f3dd2a5ddcc8dba0f233caec4e941898ce2f867fc" +content-hash = "650eb364a84df8d6cc70b2c19d177a09378245ef42efc0b95477f55bdc59f673" diff --git a/web/internet_ml_server/pyproject.toml b/web/internet_ml_server/pyproject.toml index 70c8fd1..ed38e7b 100644 --- a/web/internet_ml_server/pyproject.toml +++ b/web/internet_ml_server/pyproject.toml @@ -16,6 +16,7 @@ django = "^4.1.4" django-stubs = "^1.13.1" djangorestframework = "^3.14.0" python-dotenv = "^0.21.0" +django-environ = "^0.9.0" [tool.mypy] plugins = ["mypy_django_plugin.main"]