|
5 | 5 | package io.modelcontextprotocol.spec; |
6 | 6 |
|
7 | 7 | import java.io.IOException; |
| 8 | +import java.util.ArrayList; |
8 | 9 | import java.util.HashMap; |
9 | 10 | import java.util.List; |
10 | 11 | import java.util.Map; |
@@ -763,15 +764,61 @@ public record CallToolResult( // @formatter:off |
763 | 764 | @JsonInclude(JsonInclude.Include.NON_ABSENT) |
764 | 765 | @JsonIgnoreProperties(ignoreUnknown = true) |
765 | 766 | public record ModelPreferences(// @formatter:off |
766 | | - @JsonProperty("hints") List<ModelHint> hints, |
767 | | - @JsonProperty("costPriority") Double costPriority, |
768 | | - @JsonProperty("speedPriority") Double speedPriority, |
769 | | - @JsonProperty("intelligencePriority") Double intelligencePriority) { |
770 | | - } // @formatter:on |
| 767 | + @JsonProperty("hints") List<ModelHint> hints, |
| 768 | + @JsonProperty("costPriority") Double costPriority, |
| 769 | + @JsonProperty("speedPriority") Double speedPriority, |
| 770 | + @JsonProperty("intelligencePriority") Double intelligencePriority) { |
| 771 | + |
| 772 | + public static Builder builder() { |
| 773 | + return new Builder(); |
| 774 | + } |
| 775 | + |
| 776 | + public static class Builder { |
| 777 | + private List<ModelHint> hints; |
| 778 | + private Double costPriority; |
| 779 | + private Double speedPriority; |
| 780 | + private Double intelligencePriority; |
| 781 | + |
| 782 | + public Builder hints(List<ModelHint> hints) { |
| 783 | + this.hints = hints; |
| 784 | + return this; |
| 785 | + } |
| 786 | + |
| 787 | + public Builder addHint(String name) { |
| 788 | + if (this.hints == null) { |
| 789 | + this.hints = new ArrayList<>(); |
| 790 | + } |
| 791 | + this.hints.add(new ModelHint(name)); |
| 792 | + return this; |
| 793 | + } |
| 794 | + |
| 795 | + public Builder costPriority(Double costPriority) { |
| 796 | + this.costPriority = costPriority; |
| 797 | + return this; |
| 798 | + } |
| 799 | + |
| 800 | + public Builder speedPriority(Double speedPriority) { |
| 801 | + this.speedPriority = speedPriority; |
| 802 | + return this; |
| 803 | + } |
| 804 | + |
| 805 | + public Builder intelligencePriority(Double intelligencePriority) { |
| 806 | + this.intelligencePriority = intelligencePriority; |
| 807 | + return this; |
| 808 | + } |
| 809 | + |
| 810 | + public ModelPreferences build() { |
| 811 | + return new ModelPreferences(hints, costPriority, speedPriority, intelligencePriority); |
| 812 | + } |
| 813 | + } |
| 814 | +} // @formatter:on |
771 | 815 |
|
772 | 816 | @JsonInclude(JsonInclude.Include.NON_ABSENT) |
773 | 817 | @JsonIgnoreProperties(ignoreUnknown = true) |
774 | 818 | public record ModelHint(@JsonProperty("name") String name) { |
| 819 | + public static ModelHint of(String name) { |
| 820 | + return new ModelHint(name); |
| 821 | + } |
775 | 822 | } |
776 | 823 |
|
777 | 824 | @JsonInclude(JsonInclude.Include.NON_ABSENT) |
@@ -855,7 +902,7 @@ public Builder metadata(Map<String, Object> metadata) { |
855 | 902 | } |
856 | 903 |
|
857 | 904 | public CreateMessageRequest build() { |
858 | | - return new CreateMessageRequest(messages, modelPreferences, systemPrompt, |
| 905 | + return new CreateMessageRequest(messages, modelPreferences, systemPrompt, |
859 | 906 | includeContext, temperature, maxTokens, stopSequences, metadata); |
860 | 907 | } |
861 | 908 | } |
|
0 commit comments