update
parent
7c858b2005
commit
7da9bad2af
|
@ -23,10 +23,12 @@ import config
|
||||||
import internet
|
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")
|
QA_MODEL: Any = pipeline("question-answering")
|
||||||
GOOGLE_SEARCH_API_KEY = str(os.environ["INTERNET_ML_GOOGLE_API"])
|
# GOOGLE_SEARCH_API_KEY = str(os.getenv("INTERNET_ML_GOOGLE_API"))
|
||||||
GOOGLE_SEARCH_ENGINE_ID = str(os.environ["INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID"])
|
# GOOGLE_SEARCH_ENGINE_ID = str(os.getenv("INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID"))
|
||||||
results: tuple[list[str], list[str]] = internet.Google(
|
results: tuple[list[str], list[str]] = internet.Google(
|
||||||
query, GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID
|
query, GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID
|
||||||
).google()
|
).google()
|
||||||
|
|
|
@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "internet-ml"
|
name = "internet-ml"
|
||||||
version = "1.0.1"
|
version = "1.0.6"
|
||||||
description = "Internet-ML: Allowing ML to connect to the internet"
|
description = "Internet-ML: Allowing ML to connect to the internet"
|
||||||
readme = "./.github/README.md"
|
readme = "./.github/README.md"
|
||||||
authors = ["Thamognya Kodi <contact@thamognya.com>"]
|
authors = ["Thamognya Kodi <contact@thamognya.com>"]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
class QuestionAnswerConfig(AppConfig):
|
class NlpConfig(AppConfig):
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
default_auto_field = "django.db.models.BigAutoField"
|
||||||
name = "api.question_answer"
|
name = "api.nlp"
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class ContextConfig(AppConfig):
|
||||||
|
default_auto_field = "django.db.models.BigAutoField"
|
||||||
|
name = "api.nlp.context"
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
# Create your views here.
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class NocontextConfig(AppConfig):
|
||||||
|
default_auto_field = "django.db.models.BigAutoField"
|
||||||
|
name = "api.nlp.nocontext"
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
|
@ -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?"))
|
|
@ -6,5 +6,5 @@ from django.urls import include, path
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns: list[Any] = [
|
urlpatterns: list[Any] = [
|
||||||
path("", views.QAView.as_view()),
|
path("question-answering/", views.QAView.as_view(), name="nlp"),
|
||||||
]
|
]
|
|
@ -1,14 +1,15 @@
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
from django.views.generic.base import TemplateView
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
|
||||||
from internet_ml.NLP.no_context import QA
|
from .tools import question_answer
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
import internet_ml.NLP.no_context.QA
|
||||||
|
|
||||||
|
|
||||||
class QAView(APIView):
|
class QAView(APIView):
|
||||||
|
@ -35,14 +36,12 @@ class QAView(APIView):
|
||||||
}
|
}
|
||||||
so check error if it exists first and then for other stuff
|
so check error if it exists first and then for other stuff
|
||||||
"""
|
"""
|
||||||
try:
|
answer = internet_ml.NLP.no_context.QA.answer(
|
||||||
answer = QA.answer(request.POST.get("question"))
|
request.POST.get("question"),
|
||||||
|
str(os.getenv("INTERNET_ML_GOOGLE_API")),
|
||||||
|
str(os.getenv("INTERNET_ML_GOOGLE_SEARCH_ENGINE_ID")),
|
||||||
|
)
|
||||||
content = json.dumps(
|
content = json.dumps(
|
||||||
{"error": "", "response": answer[0], "resources": answer[1]}
|
{"error": "", "response": answer[0], "resources": answer[1]}
|
||||||
)
|
)
|
||||||
return Response(content, status=status.HTTP_200_OK)
|
return content
|
||||||
except:
|
|
||||||
content = json.dumps(
|
|
||||||
{"error": "Google API key not present in .env or environment"}
|
|
||||||
)
|
|
||||||
return Response(content, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
|
@ -0,0 +1 @@
|
||||||
|
nlp
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
|
@ -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"),
|
||||||
|
]
|
|
@ -0,0 +1,5 @@
|
||||||
|
from django.views.generic.base import TemplateView
|
||||||
|
|
||||||
|
|
||||||
|
class NLPView(TemplateView):
|
||||||
|
template_name = "index.api.nlp.dj.html"
|
|
@ -1 +1 @@
|
||||||
This is my api list
|
api
|
||||||
|
|
|
@ -6,6 +6,6 @@ from django.urls import include, path
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns: list[Any] = [
|
urlpatterns: list[Any] = [
|
||||||
path("", views.ApiView.as_view()),
|
path("", views.APIView.as_view(), name="api"),
|
||||||
path("question-answer/", include("api.question_answer.urls")),
|
path("nlp/", include("api.nlp.urls"), name="nlp api"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
from django.views.generic.base import TemplateView
|
from django.views.generic.base import TemplateView
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
|
|
||||||
|
class APIView(TemplateView):
|
||||||
class ApiView(TemplateView):
|
|
||||||
template_name = "index.api.dj.html"
|
template_name = "index.api.dj.html"
|
||||||
|
|
|
@ -42,7 +42,9 @@ INSTALLED_APPS: list[str] = [
|
||||||
"rest_framework",
|
"rest_framework",
|
||||||
"internet_ml",
|
"internet_ml",
|
||||||
"api",
|
"api",
|
||||||
"api.question_answer",
|
"api.nlp",
|
||||||
|
"api.nlp.context",
|
||||||
|
"api.nlp.nocontext",
|
||||||
]
|
]
|
||||||
|
|
||||||
REST_FRAMEWORK = {"DEFAULT_METADATA_CLASS": "rest_framework.metadata.SimpleMetadata"}
|
REST_FRAMEWORK = {"DEFAULT_METADATA_CLASS": "rest_framework.metadata.SimpleMetadata"}
|
||||||
|
@ -64,9 +66,11 @@ TEMPLATES: list[Any] = [
|
||||||
{
|
{
|
||||||
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
||||||
"DIRS": [
|
"DIRS": [
|
||||||
str(BASE_DIR) + "/api/templates",
|
|
||||||
str(BASE_DIR) + "/internet_ml_server/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,
|
"APP_DIRS": True,
|
||||||
"OPTIONS": {
|
"OPTIONS": {
|
||||||
|
|
|
@ -22,6 +22,6 @@ from . import views
|
||||||
|
|
||||||
urlpatterns: list[Any] = [
|
urlpatterns: list[Any] = [
|
||||||
# path("admin/", admin.site.urls),
|
# 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"),
|
path("api/", include("api.urls"), name="api"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
from django.views.generic.base import TemplateView
|
from django.views.generic.base import TemplateView
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
|
|
||||||
|
|
||||||
class IndexView(TemplateView):
|
class IndexView(TemplateView):
|
||||||
template_name = "index.internet_ml_server.dj.html"
|
template_name = "index.internet_ml_server.dj.html"
|
||||||
|
|
|
@ -36,6 +36,23 @@ tzdata = {version = "*", markers = "sys_platform == \"win32\""}
|
||||||
argon2 = ["argon2-cffi (>=19.1.0)"]
|
argon2 = ["argon2-cffi (>=19.1.0)"]
|
||||||
bcrypt = ["bcrypt"]
|
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]]
|
[[package]]
|
||||||
name = "django-stubs"
|
name = "django-stubs"
|
||||||
version = "1.13.1"
|
version = "1.13.1"
|
||||||
|
@ -257,4 +274,4 @@ files = [
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10"
|
python-versions = "^3.10"
|
||||||
content-hash = "58f95fa8d5dbf7be85c7a08f3dd2a5ddcc8dba0f233caec4e941898ce2f867fc"
|
content-hash = "650eb364a84df8d6cc70b2c19d177a09378245ef42efc0b95477f55bdc59f673"
|
||||||
|
|
|
@ -16,6 +16,7 @@ django = "^4.1.4"
|
||||||
django-stubs = "^1.13.1"
|
django-stubs = "^1.13.1"
|
||||||
djangorestframework = "^3.14.0"
|
djangorestframework = "^3.14.0"
|
||||||
python-dotenv = "^0.21.0"
|
python-dotenv = "^0.21.0"
|
||||||
|
django-environ = "^0.9.0"
|
||||||
|
|
||||||
[tool.mypy]
|
[tool.mypy]
|
||||||
plugins = ["mypy_django_plugin.main"]
|
plugins = ["mypy_django_plugin.main"]
|
||||||
|
|
Loading…
Reference in New Issue