Hasan Iqbal
Added OpenFactCheck library
8360ec7 unverified
|
raw
history blame
3.29 kB
# Factool integration into the LLM Fact Checker DEMO
## Advanced Usage
The **Factool** integration process follows the guidelines and the architecture of the **llm-fact-checker**. The idea followed by the current implementation, is to maximize the compatibility between the newly developed solvers and the ones present in **llm_fact_checker** code itself. Default *evidence* JSON files are produced in the same format and with the same default names. The I/O interfaces in the solvers in both monolith (blackbox) and micro-service implementations, are 100% compatible with the ones of their **GPT** integration (default **llm_fact_checker**) counterparts. The only difference is the *path_save_analysis* parameter in the **factool_blackbox_post_editor** solver, which saves the **Factool** output of the blackbox (monolith) solver to a JSON file.<br />
Example pipeline has been deployed at ```factool_config.yaml```. The **Factool** blackbox (monolith) integration is guided by ```factool_blackbox_config.yaml```.<br />
A pipeline with micro-service **Factool** setting:
```yaml
openai_key:
serper_key:
scraper_key:
solvers:
all_pass_abstain_detector:
input_name: response
output_name: response
factool_decontextualizer:
llm_in_use: gpt-4
input_name: response
output_name: claims
factool_evidence_retriever:
llm_in_use: gpt-4
input_name: claims
output_name: evidences
factool_claim_examiner:
llm_in_use: gpt-4
input_name: evidences
output_name: claim_info
factool_post_editor:
input_name: claim_info
output_name: claim_info
concat_response_generator:
input_name: claim_info
output_name: output
```
Here, the **[OpenAI](https://beta.openai.com/)**, **[Serper](https://serper.dev/)** and **[Scraper](https://www.scraperapi.com/)** API keys are mandatory for the proper functioning of the **Factool** class. Solvers are identical with the well-known solvers from the **GPT** integration. The *llm_in_use parameter* represents the **OpenAI** LLM currently being employed by the **Factool** components.<br />
The pipeline for the blackbox (monolith) **Factool** is similar, but with less inherent dynamics, employing the **Factool** *class*, instead of it's logically separated components:
```yaml
openai_key:
serper_key:
scraper_key:
solvers:
all_pass_abstain_detector:
input_name: response
output_name: response
factool_blackbox:
llm_in_use: gpt-4
input_prompt: question
input_name: response
output_name: claim_info
factool_blackbox_post_editor:
path_save_analysis: factool_evidence_analysis.json
input_name: claim_info
output_name: claim_info
concat_response_generator:
input_name: claim_info
output_name: output
```
## Example
The following example code encompases the execution of the Factool micro-services pipeline:
```python
from pipeline import Pipeline
from argparse import Namespace
args = Namespace(
user_src='../src/solvers',
config='../config/factool_config.yaml',
output='./truth'
)
p = Pipeline(args)
question = "Who is Alan Turing?"
response = "Alan Turing used to be Serbian authoritarian leader, mathematician and computer scientist. He used to be a leader of the French Resistance."
print(p(question=question, response=response))
```