🏆 deepset is a Spark Award finalist — vote for us by September 7

Integration: UniRate

Currency exchange rates, conversion, and currency listings for Haystack pipelines via the UniRate API.

Authors
UniRate Team

Table of Contents

Overview

haystack-unirate integrates the UniRate API into Haystack 2.x pipelines. It ships three @component-decorated building blocks:

  • UniRateExchangeRate — latest rate for a currency pair (or all targets).
  • UniRateConverter — convert a monetary amount between two currencies.
  • UniRateCurrencies — list every supported currency code.

UniRate covers 593+ fiat, crypto, and commodity instruments. Latest rates, conversion, and currency listings are available on the free tier; historical data requires a Pro plan.

Installation

pip install haystack-unirate

Usage

Set your API key in the UNIRATE_API_KEY environment variable (get one free at unirateapi.com).

The components are most useful when wired alongside other Haystack building blocks. Here a live rate is pulled with UniRateExchangeRate, injected into a prompt, and handed to a chat generator so the model can answer using up-to-date FX data:

from haystack import Pipeline
from haystack.utils import Secret
from haystack.components.builders import ChatPromptBuilder
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
from haystack_unirate import UniRateExchangeRate

pipeline = Pipeline()
pipeline.add_component(
    "rate", UniRateExchangeRate(api_key=Secret.from_env_var("UNIRATE_API_KEY"))
)
pipeline.add_component(
    "prompt",
    ChatPromptBuilder(
        template=[
            ChatMessage.from_user(
                "The current USD to EUR exchange rate is {{ rate }}. "
                "In one sentence, tell a traveler what 100 USD is worth in EUR."
            )
        ],
        required_variables=["rate"],
    ),
)
pipeline.add_component("llm", OpenAIChatGenerator())  # any Haystack chat generator

# Feed the live rate into the prompt, then the prompt into the chat model.
pipeline.connect("rate.rate", "prompt.rate")
pipeline.connect("prompt.prompt", "llm.messages")

result = pipeline.run({"rate": {"from_currency": "USD", "to_currency": "EUR"}})
print(result["llm"]["replies"][0].text)

UniRateConverter (amount conversion) and UniRateCurrencies (list supported codes) slot into pipelines the same way. All three components support to_dict / from_dict for pipeline serialization and use Haystack Secret for API-key handling.

License

haystack-unirate is distributed under the terms of the MIT license.