Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement server with background jobs and resume when all answers are provided #49

Merged
merged 23 commits into from
Dec 9, 2024

Conversation

grabbou
Copy link
Collaborator

@grabbou grabbou commented Dec 9, 2024

This implements #2 and #9 (please confirm)

Updated server to use latest API
Workflow now runs on the server in the background until it requests a tool or finishes
Removed saving/loading from file as we want to keep state in memory and run its updates in background. Previous example required calling "iterate" endpoint each time to advance it. We can always add it back, but I think this one is much better
Will automatically resume when all answers are provided
Logger UI

CleanShot 2024-12-09 at 04 26 13@2x

Once this gets accepted, I will go ahead and create reusable functions to reduce this boilerplate and hide abstraction.

@grabbou grabbou requested a review from pkarw December 9, 2024 00:00
@grabbou
Copy link
Collaborator Author

grabbou commented Dec 9, 2024

API Interaction Log

Initial Visit Creation

Request:

curl -X POST http://localhost:3000/visits

Response:

{
  "id": "303c8292-3f74-47b8-ae4f-4fd7b3c9381a",
  "status": "idle"
}

Fetch Visit Details (1st Call)

Request:

curl -X GET http://localhost:3000/visits/303c8292-3f74-47b8-ae4f-4fd7b3c9381a

Response:

 [
  {
    "id": "call_g1unTqAlrGHTJTv2lLnoBpc5",
    "type": "function",
    "function": {
      "name": "askPatient",
      "arguments": "{\"query\":\"Could you describe the specific symptoms the patient is currently experiencing?\"}",
      "parsed_arguments": {
        "query": "Could you describe the specific symptoms the patient is currently experiencing?"
      }
    }
  }
]

Tool Call Response Submission

Request:

curl -X POST http://localhost:3000/visits/303c8292-3f74-47b8-ae4f-4fd7b3c9381a/messages \
  -H "Content-Type: application/json" \
  -d '{"tool_call_id":"call_g1unTqAlrGHTJTv2lLnoBpc5","content":"I am good"}'

Response:

{
  "hasAllToolCalls": true
}

Fetch Visit Details (2nd Call)

Request:

curl -X GET http://localhost:3000/visits/303c8292-3f74-47b8-ae4f-4fd7b3c9381a

Response:

[
  {
    "id": "call_IyAYIOUTPaRkoWeNLQm8Jdig",
    "type": "function",
    "function": {
      "name": "askPatient",
      "arguments": "{\"query\":\"Is the patient experiencing any pain or discomfort in any part of their body?\"}",
      "parsed_arguments": {
        "query": "Is the patient experiencing any pain or discomfort in any part of their body?"
      }
    }
  }
]

Copy link
Collaborator

@pkarw pkarw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, approved.

@grabbou grabbou changed the base branch from feat/docs-update to main December 9, 2024 07:39
@grabbou grabbou merged commit eb67943 into main Dec 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants