-
Notifications
You must be signed in to change notification settings - Fork 215
Add Conversation AI to Java SDK #1235
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
base: master
Are you sure you want to change the base?
Add Conversation AI to Java SDK #1235
Conversation
68d30ee
to
9a8926e
Compare
@salaboy, @artur-ciocanu please let me know what you think. Working on integration and unit tests in the meanwhile |
Great contribution, thanks @siri-varma |
4cb6031
to
75f487f
Compare
this is great @siri-varma ! I will start reviewing soon! |
bf70fd4
to
88fe015
Compare
For integration tests, we must spin up a mock for third party LLM endpoint. Do we have similar patterns in the current setup? (where dapr is talking to a third party api and receiving responses) |
sdk-ai/src/main/java/io/dapr/ai/client/DaprConversationClient.java
Outdated
Show resolved
Hide resolved
@siri-varma this is looking good, I left some comments that basically highlight my doubts about some JDK general topics. But this is looking really good, are you planning to add integration tests inside the |
@salaboy I have tested the code by running it locally and using my OpenAI API Key.
Will get back to you on the integ tests |
Yeah check this https://java.testcontainers.org/modules/ollama/ |
@salaboy thank you for providing the testcontainer urls. Like how we have url overrides for Scheduler, I was looking one for conversation too because we will have to point dapr to the local llm model. But could not find any I tried looking in the below places and could not find anything. https://github.com/dapr/dapr/blob/2e7c61e933099b9d40fcdefbd57cc3e81069915a/pkg/injector/annotations/annotations.go#L73 |
@siri-varma thanks a lot for your contribution. I have reviewed your PR and I have a few comments similar to #1255:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@siri-varma thanks a lot for your contribution, I have left a longer comment with some of my thoughts.
Please take a look and let me know what you think.
115b5e7
to
842b0e7
Compare
@artur-ciocanu Addressed all the comments here as well. |
@artur-ciocanu , @salaboy All the builds are passing and addressed comments as well. Would you folks be able to do another round of reviews please ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally this looks great 🌟 - mind adding an example for conversation api to the examples directory in the repo with the mechanical markdown in the README with a sample .java file for users to know how to use the API?
We should also document the high level things that are expected when adding new APIs to the SDK to lower the barrier to entry for future developers and for consistency. Thanks for this PR 🚀 We are nearly there!
examples/src/main/java/io/dapr/examples/conversation/DemoConversationAI.java
Show resolved
Hide resolved
sdk-tests/src/test/java/io/dapr/it/testcontainers/DaprConversationIT.java
Outdated
Show resolved
Hide resolved
c6c36de
to
f467bd6
Compare
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
|
||
import java.util.Map; | ||
|
||
@Configuration | ||
public class TestDaprJobsConfiguration { | ||
public class DaprPreviewClientConfiguration { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The same daprPreviewClient is used across jobs and conversation. So converted the existing TestDaprJobs to a DaprPreviewClass and using it in both the places
@dapr-reviewers addressed all the comments |
I think you are looking for the following: @dapr/approvers-java-sdk @dapr/maintainers-java-sdk If you type |
Signed-off-by: Siri Varma Vegiraju <[email protected]> Signed-off-by: sirivarma <[email protected]> Signed-off-by: siri-varma <[email protected]>
Signed-off-by: sirivarma <[email protected]> Signed-off-by: siri-varma <[email protected]>
Signed-off-by: sirivarma <[email protected]> Signed-off-by: siri-varma <[email protected]>
Signed-off-by: sirivarma <[email protected]> Signed-off-by: siri-varma <[email protected]>
Signed-off-by: sirivarma <[email protected]> Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
…tionIT.java Co-authored-by: Cassie Coyle <[email protected]> Signed-off-by: Siri Varma Vegiraju <[email protected]> Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
@dapr/approvers-java-sdk rebased the branch and ready for review |
e5e51df
to
9e23ce1
Compare
Signed-off-by: siri-varma <[email protected]>
Signed-off-by: siri-varma <[email protected]>
…om/siri-varma/java-sdk into users/svegiraju/conversation-api-2
Signed-off-by: siri-varma <[email protected]>
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1235 +/- ##
============================================
+ Coverage 76.91% 77.42% +0.51%
- Complexity 1592 1762 +170
============================================
Files 145 204 +59
Lines 4843 5360 +517
Branches 562 584 +22
============================================
+ Hits 3725 4150 +425
- Misses 821 898 +77
- Partials 297 312 +15 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Signed-off-by: siri-varma <[email protected]>
PR Overview: Conversation AI SDK Integration
This PR introduces the Conversation AI SDK with the Converse API. The implementation is structured into the following categories:
Core Logic
The core logic is implemented in a key class, as detailed below:
- Validates inputs and manages job execution.
API Contracts
The following is the method signature for the Dapr Converse API:
Dapr Converse API
This method interacts with the Dapr Converse API.
conversationComponentName
daprConversationInputs
contextId
scrubPii
temperature
DaprConversationResponse
Models
The SDK follows the builder pattern for constructing models, ensuring cleaner and more maintainable object creation.
Tests
The testing strategy includes:
Issue Reference
We ensure that all PRs are linked to a relevant issue where the problem or feature has been discussed before implementation.
This PR closes the following issue: #1101
Checklist ✅
Please confirm the following before merging: