Skip to content

Commit

Permalink
[breadboard-web] Nearly functional function-calling.
Browse files Browse the repository at this point in the history
  • Loading branch information
dglazkov committed Dec 6, 2023
1 parent e21ba1c commit ccd3a3e
Show file tree
Hide file tree
Showing 6 changed files with 234 additions and 59 deletions.
2 changes: 1 addition & 1 deletion seeds/breadboard-web/docs/graphs/board-as-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
```mermaid
%%{init: 'themeVariables': { 'fontFamily': 'Fira Code, monospace' }}%%
graph TD;
input[/"input <br> id='input'"/]:::input -- "board->url" --> getBoard["fetch <br> id='getBoard'"]
input[/"input <br> id='input'"/]:::input -- "boardURL->url" --> getBoard["fetch <br> id='getBoard'"]
getFunctionSignature["jsonata <br> id='getFunctionSignature'"] -- all --> output{{"output <br> id='output'"}}:::output
getBoard["fetch <br> id='getBoard'"] -- "response->json" --> getFunctionSignature["jsonata <br> id='getFunctionSignature'"]
classDef default stroke:#ffab40,fill:#fff2ccff,color:#000
Expand Down
41 changes: 26 additions & 15 deletions seeds/breadboard-web/docs/graphs/openai-gpt-35-turbo.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,34 @@
```mermaid
%%{init: 'themeVariables': { 'fontFamily': 'Fira Code, monospace' }}%%
graph TD;
secrets2("secrets <br> id='secrets-2'"):::secrets -- "OPENAI_API_KEY->json" --> jsonata1["jsonata <br> id='jsonata-1'"]
input[/"input <br> id='input'"/]:::input -- "useStreaming->stream" --> fetch4["fetch <br> id='fetch-4'"]
jsonata1["jsonata <br> id='jsonata-1'"] -- "result->headers" --> fetch4["fetch <br> id='fetch-4'"]
lambda6["lambda <br> id='lambda-6'"] -- "board->board" --o transformStream7["transformStream <br> id='transformStream-7'"]
subgraph sg_lambda6 [lambda-6]
lambda6_jsonata3["jsonata <br> id='jsonata-3'"] -- "result->chunk" --> lambda6_output2{{"output <br> id='output-2'"}}:::output
lambda6_input1[/"input <br> id='input-1'"/]:::input -- "chunk->json" --> lambda6_jsonata3["jsonata <br> id='jsonata-3'"]
secrets1("secrets <br> id='secrets-1'"):::secrets -- "OPENAI_API_KEY->json" --> makeHeaders["jsonata <br> id='makeHeaders'"]
input[/"input <br> id='input'"/]:::input -- "useStreaming->stream" --> callOpenAI["fetch <br> id='callOpenAI'"]
makeHeaders["jsonata <br> id='makeHeaders'"] -- "result->headers" --> callOpenAI["fetch <br> id='callOpenAI'"]
lambda3["lambda <br> id='lambda-3'"] -- "board->board" --o transformStream4["transformStream <br> id='transformStream-4'"]
subgraph sg_lambda3 [lambda-3]
lambda3_transformChunk["jsonata <br> id='transformChunk'"] -- "result->chunk" --> lambda3_output2{{"output <br> id='output-2'"}}:::output
lambda3_input1[/"input <br> id='input-1'"/]:::input -- "chunk->json" --> lambda3_transformChunk["jsonata <br> id='transformChunk'"]
end
sg_lambda6:::slotted -- "lamdba->lamdba" --o lambda6
sg_lambda3:::slotted -- "lamdba->lamdba" --o lambda3
input[/"input <br> id='input'"/]:::input -- "useStreaming->useStreaming" --> jsonata3["jsonata <br> id='jsonata-3'"]
jsonata5["jsonata <br> id='jsonata-5'"] -- "result->text" --> output{{"output <br> id='output'"}}:::output
fetch4["fetch <br> id='fetch-4'"] -- "response->json" --> jsonata5["jsonata <br> id='jsonata-5'"]
transformStream7["transformStream <br> id='transformStream-7'"] -- "stream->stream" --> stream{{"output <br> id='stream'"}}:::output
fetch4["fetch <br> id='fetch-4'"] -- "stream->stream" --> transformStream7["transformStream <br> id='transformStream-7'"]
jsonata3["jsonata <br> id='jsonata-3'"] -- "result->body" --> fetch4["fetch <br> id='fetch-4'"]
input[/"input <br> id='input'"/]:::input -- "text->text" --> jsonata3["jsonata <br> id='jsonata-3'"]
lambda5["lambda <br> id='lambda-5'"] -- "board->board" --o map6["map <br> id='map-6'"]
subgraph sg_lambda5 [lambda-5]
lambda5_boardToFunction["invoke <br> id='boardToFunction'"] -- "function->function" --> lambda5_output2{{"output <br> id='output-2'"}}:::output
lambda5_input1[/"input <br> id='input-1'"/]:::input -- "item->boardURL" --> lambda5_boardToFunction["invoke <br> id='boardToFunction'"]
end
sg_lambda5:::slotted -- "lamdba->lamdba" --o lambda5
formatTools["jsonata <br> id='formatTools'"] -- "result->tools" --> makeBody["jsonata <br> id='makeBody'"]
map6["map <br> id='map-6'"] -- "list->json" --> formatTools["jsonata <br> id='formatTools'"]
makeTools["jsonata <br> id='makeTools'"] -- "result->list" --> map6["map <br> id='map-6'"]
input[/"input <br> id='input'"/]:::input -- "tools->tools" --> makeTools["jsonata <br> id='makeTools'"]
input[/"input <br> id='input'"/]:::input -- "useStreaming->useStreaming" --> makeBody["jsonata <br> id='makeBody'"]
jsonata2["jsonata <br> id='jsonata-2'"] -- "result->text" --> textOutput{{"output <br> id='textOutput'"}}:::output
callOpenAI["fetch <br> id='callOpenAI'"] -- "response->json" --> jsonata2["jsonata <br> id='jsonata-2'"]
transformStream4["transformStream <br> id='transformStream-4'"] -- "stream->stream" --> streamOutput{{"output <br> id='streamOutput'"}}:::output
callOpenAI["fetch <br> id='callOpenAI'"] -- "stream->stream" --> transformStream4["transformStream <br> id='transformStream-4'"]
makeBody["jsonata <br> id='makeBody'"] -- "result->body" --> callOpenAI["fetch <br> id='callOpenAI'"]
input[/"input <br> id='input'"/]:::input -- "text->text" --> makeBody["jsonata <br> id='makeBody'"]
classDef default stroke:#ffab40,fill:#fff2ccff,color:#000
classDef input stroke:#3c78d8,fill:#c9daf8ff,color:#000
classDef output stroke:#38761d,fill:#b6d7a8ff,color:#000
Expand Down
4 changes: 2 additions & 2 deletions seeds/breadboard-web/public/graphs/board-as-function.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
"from": "input",
"to": "getBoard",
"out": "board",
"out": "boardURL",
"in": "url"
},
{
Expand All @@ -29,7 +29,7 @@
"schema": {
"type": "object",
"properties": {
"board": {
"boardURL": {
"type": "string",
"title": "Board URL",
"description": "The URL of the board to convert to a function call",
Expand Down
Loading

0 comments on commit ccd3a3e

Please sign in to comment.