callix 0.1.1

A flexible HTTP client library for calling various AI APIs or somthing with configuration and templating support
Documentation
providers:
  my_custom_service:
    base_url: "https://api.myservice.com"
    headers:
      Authorization: "Bearer {{API_KEY}}"
      Content-Type: "application/json"
      Accept: "application/json"
    timeout: 30
    endpoints:
      predict:
        path: "/v1/predict"
        method: "POST"
        body_template: |

          {
            "model": "{{model_version}}",
            "input": {{input_data}}
          }

      analytics:
        path: "/v1/analytics/{{metric}}"
        method: "GET"
        query_params:
          start: "{{start_date}}"
          end: "{{end_date}}"

  openai:
    base_url: "https://api.openai.com"
    headers:
      Authorization: "Bearer {{API_KEY}}"
      Content-Type: "application/json"
    timeout: 60
    endpoints:
      chat:
        path: "/v1/chat/completions"
        method: "POST"
        body_template: |

          {
            "model": "{{model}}",
            "messages": {{messages}},
            "temperature": {{temperature}},
            "max_tokens": {{max_tokens}}
          }

      embeddings:
        path: "/v1/embeddings"
        method: "POST"
        body_template: |

          {
            "model": "{{model}}",
            "input": "{{text}}"
          }

  gemini:
    base_url: "https://generativelanguage.googleapis.com"
    headers:
      Content-Type: "application/json"
    endpoints:
      generate:
        path: "/v1beta/models/{{model}}:generateContent"
        method: "POST"
        query_params:
          key: "{{API_KEY}}"
        body_template: |

          {
            "contents": [{
              "parts": [{
                "text": "{{prompt}}"
              }]
            }]
          }

  anthropic:
    base_url: "https://api.anthropic.com"
    headers:
      x-api-key: "{{API_KEY}}"
      anthropic-version: "2023-06-01"
      Content-Type: "application/json"
    timeout: 90
    endpoints:
      messages:
        path: "/v1/messages"
        method: "POST"
        body_template: |

          {
            "model": "{{model}}",
            "max_tokens": {{max_tokens}},
            "messages": {{messages}}
          }