MCPcopy Create free account
hub / github.com/antirez/ds4 / parse_anthropic_request

Function parse_anthropic_request

ds4_server.c:2806–3016  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2804 if (wrote) buf_putc(b, ',');
2805 append_json_arg_pair(b, &args.v[i]);
2806 wrote = true;
2807 }
2808 buf_putc(b, '}');
2809 json_args_free(&args);
2810}
2811
2812static void append_dsml_tool_calls_text(buf *b, const tool_calls *calls) {
2813 if (!calls || calls->len == 0) return;
2814 if (calls->raw_tool_text && calls->raw_tool_text[0]) {
2815 buf_puts(b, calls->raw_tool_text);
2816 return;
2817 }
2818 buf_puts(b, "\n\n<|DSML|tool_calls>\n");
2819 for (int i = 0; i < calls->len; i++) {
2820 const tool_call *tc = &calls->v[i];
2821 buf_puts(b, "<|DSML|invoke name=\"");
2822 append_dsml_attr_escaped(b, tc->name);
2823 buf_puts(b, "\">\n");
2824 if (!append_dsml_arguments_from_json(b, tc->arguments, NULL)) {
2825 buf_puts(b, "<|DSML|parameter name=\"arguments\" string=\"true\">");
2826 append_dsml_parameter_text(b, tc->arguments);
2827 buf_puts(b, "</|DSML|parameter>\n");
2828 }
2829 buf_puts(b, "</|DSML|invoke>\n");
2830 }
2831 buf_puts(b, "</|DSML|tool_calls>");
2832}
2833
2834static void append_glm_tool_calls_text(buf *b, const tool_calls *calls,
2835 const tool_schema_orders *tool_orders) {
2836 if (!calls || calls->len == 0) return;
2837 if (calls->raw_tool_text && calls->raw_tool_text[0]) {
2838 buf_puts(b, calls->raw_tool_text);
2839 return;
2840 }
2841 buf_putc(b, '\n');
2842 for (int i = 0; i < calls->len; i++) {
2843 const tool_call *tc = &calls->v[i];
2844 const tool_schema_order *order =
2845 tool_schema_orders_find(tool_orders, tc->name);
2846 buf_puts(b, "<tool_call>");
2847 buf_puts(b, tc->name ? tc->name : "");
2848 if (!append_glm_arguments_from_json(b, tc->arguments, order)) {
2849 buf_puts(b, "<arg_key>arguments</arg_key><arg_value>");
2850 append_glm_arg_value_text(b, tc->arguments);
2851 buf_puts(b, "</arg_value>");
2852 }
2853 buf_puts(b, "</tool_call>");
2854 }
2855 buf_putc(b, '\n');
2856}
2857
2858static void append_tool_calls_text_for_syntax(buf *b,
2859 server_model_syntax syntax,
2860 const tool_calls *calls,
2861 const tool_schema_orders *tool_orders) {
2862 if (syntax == SERVER_MODEL_SYNTAX_GLM) {
2863 append_glm_tool_calls_text(b, calls, tool_orders);

Callers 1

client_mainFunction · 0.85

Calls 15

request_initFunction · 0.85
json_wsFunction · 0.85
json_stringFunction · 0.85
chat_msgs_freeFunction · 0.85
parse_anthropic_messagesFunction · 0.85
parse_anthropic_systemFunction · 0.85
parse_tools_valueFunction · 0.85
json_skip_valueFunction · 0.85
json_intFunction · 0.85
json_numberFunction · 0.85
json_boolFunction · 0.85
parse_stopFunction · 0.85

Tested by

no test coverage detected