Commit 205d063e

hallacy <hallacy@openai.com>
2021-09-10 01:46:36
Search v2 functionality (#33) tag: v0.10.4
* Add support for search_indices (#64) * Add support for search_indices * Updated with Schnurr's comments * Add version to search (#65) * Make search query required (#67)
1 parent 7febb75
Changed files (5)
openai/api_resources/__init__.py
@@ -1,8 +1,9 @@
+from openai.api_resources.answer import Answer  # noqa: F401
+from openai.api_resources.classification import Classification  # noqa: F401
 from openai.api_resources.completion import Completion  # noqa: F401
 from openai.api_resources.engine import Engine  # noqa: F401
 from openai.api_resources.error_object import ErrorObject  # noqa: F401
 from openai.api_resources.file import File  # noqa: F401
-from openai.api_resources.answer import Answer  # noqa: F401
-from openai.api_resources.classification import Classification  # noqa: F401
-from openai.api_resources.model import Model  # noqa: F401
 from openai.api_resources.fine_tune import FineTune  # noqa: F401
+from openai.api_resources.model import Model  # noqa: F401
+from openai.api_resources.search import Search  # noqa: F401
openai/api_resources/search.py
@@ -0,0 +1,15 @@
+from openai.api_resources.abstract.api_resource import APIResource
+
+
+class Search(APIResource):
+    api_prefix = "v1"
+    OBJECT_NAME = "search_indices"
+
+    @classmethod
+    def class_url(cls):
+        return "/%s/%s" % (cls.api_prefix, cls.OBJECT_NAME)
+
+    @classmethod
+    def create_alpha(cls, **params):
+        instance = cls()
+        return instance.request("post", f"{cls.class_url()}/search", params)
openai/__init__.py
@@ -34,6 +34,6 @@ from openai.api_resources import (  # noqa: E402,F401
     File,
     FineTune,
     Model,
+    Search,
 )
-
-from openai.error import OpenAIError, APIError, InvalidRequestError  # noqa: E402,F401
+from openai.error import APIError, InvalidRequestError, OpenAIError  # noqa: E402,F401
openai/cli.py
@@ -3,16 +3,16 @@ import os
 import signal
 import sys
 import warnings
+
+import openai
 from openai.validators import (
-    write_out_file,
     apply_necessary_remediation,
     apply_optional_remediation,
-    read_any_format,
     get_validators,
+    read_any_format,
+    write_out_file,
 )
 
-import openai
-
 
 class bcolors:
     HEADER = "\033[95m"
@@ -102,7 +102,6 @@ class Engine:
 
     @classmethod
     def search(cls, args):
-        # Will soon be deprecated and replaced by a Search.create
         params = {
             "query": args.query,
             "max_rerank": args.max_rerank,
@@ -113,6 +112,9 @@ class Engine:
         if args.file:
             params["file"] = args.file
 
+        if args.version:
+            params["version"] = args.version
+
         resp = openai.Engine(id=args.id).search(**params)
         scores = [
             (search_result["score"], search_result["document"])
@@ -221,6 +223,17 @@ class File:
         print(file)
 
 
+class Search:
+    @classmethod
+    def create_alpha(cls, args):
+        resp = openai.Search.create_alpha(
+            query=[args.query],
+            max_documents=args.max_documents,
+            file_id=args.file,
+        )
+        print(resp)
+
+
 class FineTune:
     @classmethod
     def list(cls, args):
@@ -589,6 +602,11 @@ Mutually exclusive with `top_p`.""",
         type=bool,
         default=False,
     )
+    sub.add_argument(
+        "--version",
+        help="The version of the search routing to use",
+    )
+
     sub.add_argument("-q", "--query", required=True, help="Search query")
     sub.set_defaults(func=Engine.search)
 
@@ -688,6 +706,30 @@ Mutually exclusive with `top_p`.""",
     sub = subparsers.add_parser("files.list")
     sub.set_defaults(func=File.list)
 
+    # Search
+    sub = subparsers.add_parser("search.create_alpha")
+
+    sub.add_argument(
+        "-f",
+        "--file",
+        required=True,
+        help="ID for previously uploaded file that contains the documents you want to search",
+    )
+    sub.add_argument(
+        "-m",
+        "--max_documents",
+        help="The maximum number of documents to return",
+        type=int,
+        default=200,
+    )
+    sub.add_argument(
+        "-q",
+        "--query",
+        required=True,
+        help="Search query",
+    )
+    sub.set_defaults(func=Search.create_alpha)
+
     # Finetune
     sub = subparsers.add_parser("fine_tunes.list")
     sub.set_defaults(func=FineTune.list)
openai/version.py
@@ -1,1 +1,1 @@
-VERSION = "0.10.3"
+VERSION = "0.10.4"