Skip to content
This repository has been archived by the owner on Jan 21, 2024. It is now read-only.

Commit

Permalink
Merge pull request #13 from dabumana/v.0.1.1
Browse files Browse the repository at this point in the history
V.0.1.1
  • Loading branch information
dabumana committed Feb 4, 2023
2 parents 2a9e521 + 3249438 commit 7053aad
Show file tree
Hide file tree
Showing 17 changed files with 787 additions and 324 deletions.
172 changes: 172 additions & 0 deletions caos.cast

Large diffs are not rendered by default.

Binary file modified docs/media/console.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/media/models.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ require (

require (
github.com/gdamore/encoding v1.0.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect
github.com/rivo/uniseg v0.4.2 // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1 h1:QqwPZCwh/k1u
github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1/go.mod h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8=
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
Expand Down
5 changes: 3 additions & 2 deletions model/historical.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package model

// HistoricalPrompt - historical prompt
type HistoricalPrompt struct {
Header EngineProperties `json:"properties"`
Body PromptProperties `json:"body"`
Header EngineProperties `json:"properties"`
Body PromptProperties `json:"body"`
Predict PredictProperties `json:"predict"`
}

// HistoricalEvent - Session historical event
Expand Down
41 changes: 41 additions & 0 deletions model/predict.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Package model section
package model

// PredictProperties - Request model
type PredictProperties struct {
Input []string `json:"input"`
Details PredictResponse `json:"details"`
}

// PredictRequest - Request model
type PredictRequest struct {
Document string `json:"document"`
}

// PredictResponse - Response model
type PredictResponse struct {
Documents []Predict `json:"documents"`
}

// Predict - Document properties model
type Predict struct {
AverageProb float64 `json:"average_generated_prob"`
CompletelyProb float64 `json:"completely_generated_prob"`
OverallBurstiness float64 `json:"overall_burstiness"`
Paragraphs []Paragraph `json:"paragraphs"`
Sentences []Sentence `json:"sentences"`
}

// Sentence - Nested sentence model
type Sentence struct {
GeneratedProb int `json:"generated_prob"`
Perplexity int `json:"perplexity"`
Sentence string `json:"sentence"`
}

// Paragraph - Nested paragraphs model
type Paragraph struct {
CompletelyProb float64 `json:"completely_generated_prob"`
NumberSentences int `json:"num_sentences"`
Index int `json:"start_sentence_index"`
}
83 changes: 83 additions & 0 deletions service/agent.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// Package service section
package service

import (
"context"
"log"
"net/http"
"os"

"caos/model"

"github.com/PullRequestInc/go-gpt3"
"github.com/joho/godotenv"
)

// Agent - Contextual client API
type Agent struct {
ctx context.Context
client gpt3.Client
exClient *http.Client
engineProperties model.EngineProperties
promptProperties model.PromptProperties
predictProperties model.PredictProperties
}

// Initialize - Creates context background to be used along with the client
func (c Agent) Initialize() Agent {
c.ctx = context.Background()
c.client, c.exClient = c.Connect()
return c
}

// Connect - Contextualize the API to create a new client
func (c Agent) Connect() (gpt3.Client, *http.Client) {
godotenv.Load()

apiKey := os.Getenv("API_KEY")
if apiKey == "" {
log.Fatalln("Missing API KEY")
}

client := gpt3.NewClient(apiKey)
externalClient := http.Client{
Transport: http.DefaultTransport,
}

c.client = client
c.exClient = &externalClient

return c.client, c.exClient
}

// SetEngineParameters - Set engine parameters for the current prompt
func (c Agent) SetEngineParameters(pmodel string, temperature float32, topp float32, penalty float32, frequency float32) model.EngineProperties {
properties := model.EngineProperties{
Model: pmodel,
Temperature: temperature,
TopP: topp,
PresencePenalty: penalty,
FrequencyPenalty: frequency,
}
return properties
}

// SetPromptParameters - Set request parameters for the current prompt
func (c Agent) SetPromptParameters(promptContext []string, instruction []string, tokens int, results int, probabilities int) model.PromptProperties {
properties := model.PromptProperties{
PromptContext: promptContext,
Instruction: instruction,
MaxTokens: tokens,
Results: results,
Probabilities: probabilities,
}
return properties
}

// SetPredictionParameters - Set prediction parameters for the current prompt
func (c Agent) SetPredictionParameters(prompContext []string) model.PredictProperties {
properties := model.PredictProperties{
Input: prompContext,
}
return properties
}
66 changes: 0 additions & 66 deletions service/client.go

This file was deleted.

56 changes: 41 additions & 15 deletions service/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,45 +7,71 @@ import (

// Controller - Contextual client controller API
type Controller struct {
currentUser Client
currentAgent Agent
}

// AttachProfile - Attach profile to a new service client
func (c Controller) AttachProfile() Client {
var serviceClient Client
func (c Controller) AttachProfile() Agent {
var serviceClient Agent
serviceClient = serviceClient.Initialize()

return serviceClient
}

// InstructionRequest - Start edit request to send a task prompt
func (c Controller) InstructionRequest() {
resp := node.prompt.SendEditPrompt(c.currentUser)
// EditRequest - Start edit request to send a task prompt
func (c Controller) EditRequest() {
resp := node.prompt.SendEditPrompt(c.currentAgent)

var event EventManager
if resp != nil {
event.LogInstruction(&node.agent.currentUser.engineProperties, &node.agent.currentUser.promptProperties, resp)
event.VisualLogInstruction(resp)
event.LogEdit(&node.agent.currentAgent.engineProperties, &node.agent.currentAgent.promptProperties, resp)
event.VisualLogEdit(resp)
}
event.LogEngine(c.currentUser)
event.LogEngine(c.currentAgent)
}

// CompletionRequest - Start completion request to send task prompt
func (c Controller) CompletionRequest() {
resp := node.prompt.SendPrompt(c.currentUser)
resp := node.prompt.SendCompletion(c.currentAgent)

var event EventManager
if resp != nil {
event.LogCompletion(&node.agent.currentUser.engineProperties, &node.agent.currentUser.promptProperties, resp)
event.LogCompletion(&node.agent.currentAgent.engineProperties, &node.agent.currentAgent.promptProperties, resp)
event.VisualLogCompletion(resp)
}
event.LogEngine(c.currentUser)
event.LogEngine(c.currentAgent)
}

// EmbeddingRequest - Start a embedding vector request
func (c Controller) EmbeddingRequest() {
resp := node.prompt.SendEmbeddingPrompt(c.currentAgent)

var event EventManager
if resp != nil {
event.LogEmbedding(&node.agent.currentAgent.engineProperties, &node.agent.currentAgent.promptProperties, resp)
event.VisualLogEmbedding(resp)
}
event.LogEngine(c.currentAgent)
}

// PredictableRequest - Start a predictable string request
func (c Controller) PredictableRequest() {
resp := node.prompt.SendPredictablePrompt(c.currentAgent)

var event EventManager
if resp != nil {
event.LogPredict(&node.agent.currentAgent.predictProperties, resp)
event.VisualLogPredict(resp)
}
event.LogPredictEngine(node.agent.currentAgent)
}

// ListModels - Get actual models available
func (c Controller) ListModels() {
resp := node.prompt.GetListModels(c.currentUser)
for _, i := range resp.Data {
parameters.Models = append(parameters.Models, i.ID)
resp := node.prompt.GetListModels(c.currentAgent)
if resp != nil {
for _, i := range resp.Data {
parameters.Models = append(parameters.Models, i.ID)
}
}
}

0 comments on commit 7053aad

Please sign in to comment.