Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,13 @@ env vars: GPTSCRIPT_WORKSPACE_DIR`)
case "listElements":
tools.ListElements(os.Getenv("DATASETID"))
case "getElement":
tools.GetElement(os.Getenv("DATASETID"), os.Getenv("ELEMENT"))
tools.GetElementLLM(os.Getenv("DATASETID"), os.Getenv("ELEMENT"))
case "getAllElements":
tools.GetAllElementsLLM(os.Getenv("DATASETID"))
case "getElementSDK":
tools.GetElementSDK(os.Getenv("DATASETID"), os.Getenv("ELEMENT"))
case "getAllElementsSDK":
tools.GetAllElementsSDK(os.Getenv("DATASETID"))
case "createDataset":
tools.CreateDataset(os.Getenv("DATASETNAME"), os.Getenv("DATASETDESCRIPTION"))
case "addElement":
Expand All @@ -43,8 +49,6 @@ env vars: GPTSCRIPT_WORKSPACE_DIR`)
}

addElements(os.Getenv("DATASETID"), elementInputs)
case "getAllElements":
tools.GetAllElements(os.Getenv("DATASETID"))
default:
fmt.Printf("unknown command: %s\n", os.Args[1])
os.Exit(1)
Expand Down
38 changes: 30 additions & 8 deletions pkg/tools/getAllElements.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,42 @@ package tools

import (
"context"
"encoding/base64"
"encoding/json"
"fmt"
"os"
"strings"

"github.com/gptscript-ai/datasets/pkg/dataset"
)

func GetAllElements(datasetID string) {
func GetAllElementsLLM(datasetID string) {
elems := getAllElements(datasetID)

var elemStrings []string
for _, e := range elems {
rawContents, err := base64.StdEncoding.DecodeString(e.Contents)
if err != nil {
rawContents = []byte(e.Contents)
}
elemStrings = append(elemStrings, fmt.Sprintf(`{"name": %q, "description": %q, "contents": %q}`, e.Name, e.Description, string(rawContents)))
}

fmt.Printf("[%s]", strings.Join(elemStrings, ","))
}

func GetAllElementsSDK(datasetID string) {
elems := getAllElements(datasetID)
elemsJSON, err := json.Marshal(elems)
if err != nil {
fmt.Printf("failed to marshal elements: %v\n", err)
os.Exit(1)
}

fmt.Println(string(elemsJSON))
}

func getAllElements(datasetID string) []elem {
m, err := dataset.NewManager()
if err != nil {
fmt.Printf("failed to create dataset manager: %v\n", err)
Expand Down Expand Up @@ -38,11 +66,5 @@ func GetAllElements(datasetID string) {
})
}

elemsJSON, err := json.Marshal(elems)
if err != nil {
fmt.Printf("failed to marshal elements: %v\n", err)
os.Exit(1)
}

fmt.Println(string(elemsJSON))
return elems
}
36 changes: 26 additions & 10 deletions pkg/tools/getElement.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package tools

import (
"context"
"encoding/base64"
"encoding/json"
"fmt"
"os"
Expand All @@ -15,7 +16,30 @@ type elem struct {
Description string `json:"description,omitempty"`
}

func GetElement(datasetID, elementName string) {
func GetElementLLM(datasetID, elementName string) {
element := getElement(datasetID, elementName)
// Attempt to base64 decode the contents.
rawContents, err := base64.StdEncoding.DecodeString(element.Contents)
if err != nil {
// If it's not base64, just use the contents.
rawContents = []byte(element.Contents)
}

fmt.Printf(`{"name": %q, "description": %q, "contents": %q}`, element.Name, element.Description, string(rawContents))
}

func GetElementSDK(datasetID, elementName string) {
element := getElement(datasetID, elementName)
elementJSON, err := json.Marshal(element)
if err != nil {
fmt.Printf("failed to marshal element: %v\n", err)
os.Exit(1)
}

fmt.Print(string(elementJSON))
}

func getElement(datasetID, elementName string) elem {
m, err := dataset.NewManager()
if err != nil {
fmt.Printf("failed to create dataset manager: %v\n", err)
Expand All @@ -34,17 +58,9 @@ func GetElement(datasetID, elementName string) {
os.Exit(1)
}

element := elem{
return elem{
Contents: string(elementContents),
Name: e.Name,
Description: e.Description,
}

elementJSON, err := json.Marshal(element)
if err != nil {
fmt.Printf("failed to marshal element: %v\n", err)
os.Exit(1)
}

fmt.Print(string(elementJSON))
}
29 changes: 23 additions & 6 deletions tool.gpt
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,36 @@ Param: datasetID: the ID of the dataset

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool listElements

---
Name: Get Element SDK
Description: Gets a particular element's metadata and contents. For SDK use only.
Param: datasetID: the ID of the dataset
Param: element: the name of the element

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool getElement

---
Name: Get All Elements SDK
Description: Gets the contents of all elements in a dataset. For SDK use only.
Param: datasetID: the ID of the dataset

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool getAllElements

---
Name: Get Element
Description: Gets a particular element's metadata and contents
Description: Gets a particular element's metadata and contents.
Param: datasetID: the ID of the dataset
Param: element: the name of the element

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool getElement

---
Name: Get All Elements
Description: Gets the contents of all elements in a dataset.
Param: datasetID: the ID of the dataset

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool getAllElements

---
Name: Create Dataset
Description: Creates a new, empty dataset
Expand All @@ -44,9 +66,4 @@ Param: elements: a JSON array of elements to add, like [{"name":"one","descripti

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool addElements

---
Name: Get All Elements
Description: Gets the contents of all elements in a dataset
Param: datasetID: the ID of the dataset

#!${GPTSCRIPT_TOOL_DIR}/bin/gptscript-go-tool getAllElements