.coveragerc
.gitignore
.isort.cfg
.pre-commit-config.yaml
.pylintrc
CONTRIBUTING.md
LICENSE
OWNERS
README.md
code-of-conduct.md
pyproject.toml
pytest.ini
tox.ini
.github/dependabot.yml
.github/actions/free-disk-space/action.yml
.github/actions/ollama-setup/action.yml
.github/workflows/actionlint.dockerfile
.github/workflows/actionlint.yml
.github/workflows/lint.yml
.github/workflows/pypi.yml
.github/workflows/test.yml
.github/workflows/test_contrib.yml
.github/workflows/test_e2e.yml
.github/workflows/test_e2e_3_3.yml
.github/workflows/test_examples.yml
.github/workflows/matchers/actionlint.json
.github/workflows/matchers/pylint.json
contrib/00_example/.pylintrc
contrib/00_example/README.md
contrib/00_example/requirements.txt
contrib/00_example/tox.ini
contrib/00_example/examples/hello.py
contrib/00_example/notebooks/hello.ipynb
contrib/00_example/src/__init__.py
contrib/00_example/src/hello_lib.py
contrib/00_example/tests/test_hello.py
contrib/pdl/.pylintrc
contrib/pdl/README.md
contrib/pdl/pyproject.toml
contrib/pdl/tox.ini
contrib/pdl/examples/enforce_low_hallucination.py
contrib/pdl/notebooks/pdl.ipynb
contrib/pdl/notebooks/sequential_scaling.ipynb
contrib/pdl/src/granite_io_pdl/pdl_io.py
contrib/pdl/src/granite_io_pdl/sequential_scaling.pdl
contrib/pdl/src/granite_io_pdl/sequential_scaling.py
contrib/pdl/tests/io/test_pdl_io.py
data/.gitignore
data/test_retrieval/govt10.jsonl.zip
data/test_retrieval/govt10_embeds.parquet/part_001.parquet
docs/design.md
docs/images/granite-io-full-architecture.png
docs/images/granite-io-input-output-architecture.png
docs/images/granite-io-io-proc-architecture.png
examples/model_chat.py
examples/model_chat_with_citation.py
examples/model_chat_with_citation_hallucination.py
examples/model_chat_with_mbrd_majority_voting.py
examples/model_chat_with_thinking.py
examples/model_chat_with_thinking_custom_io_processor.py
examples/model_chat_with_thinking_separate_backend.py
examples/watsonx_litellm.py
notebooks/answerability.ipynb
notebooks/certainty.ipynb
notebooks/citations.ipynb
notebooks/hallucinations.ipynb
notebooks/io.ipynb
notebooks/query_rewrite.ipynb
notebooks/rag.ipynb
notebooks/retrieval.ipynb
notebooks/voting.ipynb
src/granite_io/__init__.py
src/granite_io/_version.py
src/granite_io/factory.py
src/granite_io/optional.py
src/granite_io/types.py
src/granite_io.egg-info/PKG-INFO
src/granite_io.egg-info/SOURCES.txt
src/granite_io.egg-info/dependency_links.txt
src/granite_io.egg-info/requires.txt
src/granite_io.egg-info/top_level.txt
src/granite_io/backend/__init__.py
src/granite_io/backend/base.py
src/granite_io/backend/litellm.py
src/granite_io/backend/openai.py
src/granite_io/backend/registry.py
src/granite_io/backend/transformers.py
src/granite_io/backend/vllm_server.py
src/granite_io/io/__init__.py
src/granite_io/io/base.py
src/granite_io/io/consts.py
src/granite_io/io/registry.py
src/granite_io/io/answerability/__init__.py
src/granite_io/io/answerability/answerability.py
src/granite_io/io/certainty/__init__.py
src/granite_io/io/certainty/certainty.py
src/granite_io/io/citations/__init__.py
src/granite_io/io/citations/citations.py
src/granite_io/io/granite_3_2/__init__.py
src/granite_io/io/granite_3_2/granite_3_2.py
src/granite_io/io/granite_3_2/input_processors/__init__.py
src/granite_io/io/granite_3_2/input_processors/granite_3_2_input_processor.py
src/granite_io/io/granite_3_2/output_processors/__init__.py
src/granite_io/io/granite_3_2/output_processors/granite_3_2_output_parser.py
src/granite_io/io/granite_3_2/output_processors/granite_3_2_output_processor.py
src/granite_io/io/granite_3_3/__init__.py
src/granite_io/io/granite_3_3/granite_3_3.py
src/granite_io/io/granite_3_3/input_processors/__init__.py
src/granite_io/io/granite_3_3/input_processors/granite_3_3_input_processor.py
src/granite_io/io/granite_3_3/output_processors/__init__.py
src/granite_io/io/granite_3_3/output_processors/granite_3_3_output_parser.py
src/granite_io/io/granite_3_3/output_processors/granite_3_3_output_processor.py
src/granite_io/io/hallucinations/__init__.py
src/granite_io/io/hallucinations/hallucinations.py
src/granite_io/io/query_rewrite/__init__.py
src/granite_io/io/query_rewrite/query_rewrite.py
src/granite_io/io/retrieval/__init__.py
src/granite_io/io/retrieval/retrieval.py
src/granite_io/io/retrieval/util.py
src/granite_io/io/voting/__init__.py
src/granite_io/io/voting/mbrd.py
src/granite_io/io/voting/simple.py
src/granite_io/visualization/__init__.py
src/granite_io/visualization/citations.py
src/granite_io/visualization/index.css
src/granite_io/visualization/index.js
tests/conftest.py
tests/test_backends.py
tests/test_factory.py
tests/test_types.py
tests/test_utils.py
tests/cassettes/test_backends/test_num_return_sequences_1[backend_litellm].yaml
tests/cassettes/test_backends/test_num_return_sequences_1[backend_openai].yaml
tests/cassettes/test_backends/test_num_return_sequences_3[backend_litellm].yaml
tests/cassettes/test_backends/test_num_return_sequences_3[backend_openai].yaml
tests/cassettes/test_backends/test_num_return_sequences_invalid[backend_litellm--1].yaml
tests/cassettes/test_backends/test_num_return_sequences_invalid[backend_litellm-0].yaml
tests/cassettes/test_backends/test_simple[backend_litellm].yaml
tests/cassettes/test_backends/test_simple[backend_openai].yaml
tests/io/test_answerability.py
tests/io/test_certainty.py
tests/io/test_citations.py
tests/io/test_hallucinations.py
tests/io/test_make_io_processor.py
tests/io/test_query_rewrite.py
tests/io/test_retrieval.py
tests/io/test_voting.py
tests/io/cassettes/test_answerability/test_run_model.yaml
tests/io/cassettes/test_certainty/test_run_composite.yaml
tests/io/cassettes/test_certainty/test_run_model.yaml
tests/io/cassettes/test_citations/test_run_composite.yaml
tests/io/cassettes/test_citations/test_run_model.yaml
tests/io/cassettes/test_granite_3_2/test_run_processor[backend_litellm-simple].yaml
tests/io/cassettes/test_granite_3_2/test_run_processor[backend_litellm-thinking_tag].yaml
tests/io/cassettes/test_granite_3_2/test_run_processor[backend_openai-simple].yaml
tests/io/cassettes/test_granite_3_2/test_run_processor[backend_openai-thinking_tag].yaml
tests/io/cassettes/test_hallucinations/test_run_composite.yaml
tests/io/cassettes/test_hallucinations/test_run_model.yaml
tests/io/cassettes/test_hallucinations/test_run_processor.yaml
tests/io/cassettes/test_make_io_processor/test_make_io_processor[backend_litellm-simple].yaml
tests/io/cassettes/test_make_io_processor/test_make_io_processor[backend_litellm-stop_strings].yaml
tests/io/cassettes/test_make_io_processor/test_make_io_processor[backend_litellm-thinking_tag].yaml
tests/io/cassettes/test_make_io_processor/test_make_io_processor[backend_openai-simple].yaml
tests/io/cassettes/test_make_io_processor/test_make_io_processor[backend_openai-stop_strings].yaml
tests/io/cassettes/test_make_io_processor/test_make_io_processor[backend_openai-thinking_tag].yaml
tests/io/cassettes/test_query_rewrite/test_request_processor.yaml
tests/io/cassettes/test_query_rewrite/test_run_model.yaml
tests/io/cassettes/test_voting/test_mbrd_majority_voting[backend_openai].yaml
tests/io/cassettes/test_voting/test_numeric_voting[backend_openai].yaml
tests/io/granite_3_2/test_granite_3_2.py
tests/io/granite_3_2/cassettes/test_granite_3_2/test_completion_presence_param[backend_litellm].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_completion_presence_param[backend_openai].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_completion_repetition_param[backend_litellm].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_completion_repetition_param[backend_openai].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_multiple_return[backend_openai-custom_system_prompt].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_multiple_return[backend_openai-simple].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_multiple_return[backend_openai-stop_strings].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_multiple_return[backend_openai-thinking_tag].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_litellm-custom_system_prompt].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_litellm-simple].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_litellm-stop_strings].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_litellm-thinking_tag].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_openai-custom_system_prompt].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_openai-simple].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_openai-stop_strings].yaml
tests/io/granite_3_2/cassettes/test_granite_3_2/test_run_processor[backend_openai-thinking_tag].yaml
tests/io/granite_3_2/input_processors/test_granite_3_2_input_processor.py
tests/io/granite_3_2/input_processors/testdata/test_reasoning_prompt.txt
tests/io/granite_3_2/output_processors/test_granite_3_2_output_parser.py
tests/io/granite_3_2/output_processors/test_granite_3_2_output_processor.py
tests/io/granite_3_2/output_processors/testdata/test_document_source.txt
tests/io/granite_3_2/output_processors/testdata/test_output.txt
tests/io/granite_3_2/output_processors/testdata/test_output_with_citation.txt
tests/io/granite_3_2/output_processors/testdata/test_output_with_citation_from_source.txt
tests/io/granite_3_2/output_processors/testdata/test_output_with_citation_hallucinations.txt
tests/io/granite_3_2/output_processors/testdata/test_output_with_colons_citation_text.txt
tests/io/granite_3_2/output_processors/testdata/test_output_with_invalid_citation.txt
tests/io/granite_3_2/output_processors/testdata/test_output_with_multiple_citations_per_document.txt
tests/io/granite_3_2/output_processors/testdata/test_raw_reasoning_output.txt
tests/io/granite_3_2/output_processors/testdata/test_reasoning_output_processor_response.txt
tests/io/granite_3_2/output_processors/testdata/test_reasoning_output_processor_thought.txt
tests/io/granite_3_3/test_granite_3_3.py
tests/io/granite_3_3/cassettes/test_granite_3_3/test_completion_presence_param[backend_3_3_openai].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_completion_repetition_param[backend_3_3_litellm].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_multiple_return[backend_3_3_openai-custom_system_prompt].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_multiple_return[backend_3_3_openai-simple].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_multiple_return[backend_3_3_openai-stop_strings].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_multiple_return[backend_3_3_openai-thinking_tag].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_litellm-custom_system_prompt].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_litellm-simple].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_litellm-stop_strings].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_litellm-thinking_tag].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_openai-custom_system_prompt].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_openai-simple].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_openai-stop_strings].yaml
tests/io/granite_3_3/cassettes/test_granite_3_3/test_run_processor[backend_3_3_openai-thinking_tag].yaml
tests/io/granite_3_3/input_processors/test_granite_3_3_input_processor.py
tests/io/granite_3_3/input_processors/testdata/test_reasoning_prompt.txt
tests/io/granite_3_3/output_processors/test_granite_3_3_output_parser.py
tests/io/granite_3_3/output_processors/test_granite_3_3_output_processor.py
tests/io/granite_3_3/output_processors/testdata/test_document_source.txt
tests/io/granite_3_3/output_processors/testdata/test_output.txt
tests/io/granite_3_3/output_processors/testdata/test_output_with_citation.txt
tests/io/granite_3_3/output_processors/testdata/test_output_with_citation_from_source.txt
tests/io/granite_3_3/output_processors/testdata/test_output_with_citation_hallucinations.txt
tests/io/granite_3_3/output_processors/testdata/test_output_with_colons_citation_text.txt
tests/io/granite_3_3/output_processors/testdata/test_output_with_invalid_citation.txt
tests/io/granite_3_3/output_processors/testdata/test_output_with_multiple_citations_per_document.txt
tests/io/granite_3_3/output_processors/testdata/test_raw_reasoning_output.txt
tests/io/granite_3_3/output_processors/testdata/test_reasoning_output_processor_response.txt
tests/io/granite_3_3/output_processors/testdata/test_reasoning_output_processor_thought.txt