> For the complete documentation index, see [llms.txt](https://docs.zingg.ai/0.5.0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zingg.ai/0.5.0/working-with-python/index.md).

# Python API

## Zingg Entity Resolution Python Package

Zingg Python APIs for entity resolution, identity resolution, record linkage, data mastering and deduplication using ML (<https://www.zingg.ai>)

**NOTE**

Requires **python 3.6+**; **spark 3.5.0.** Otherwise, [`zingg.client.Zingg()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg) cannot be executed

* [Zingg Entity Resolution Package](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md)
  * [zingg.client](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg-client)
  * [`Arguments`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments)
    * [`Arguments.copyArgs()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.copyArgs)
    * [`Arguments.createArgumentsFromJSON()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.createArgumentsFromJSON)
    * [`Arguments.createArgumentsFromJSONString()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.createArgumentsFromJSONString)
    * [`Arguments.getArgs()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getArgs)
    * [`Arguments.getModelId()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getModelId)
    * [`Arguments.getZinggBaseModelDir()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getZinggBaseModelDir)
    * [`Arguments.getZinggBaseTrainingDataDir()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getZinggBaseTrainingDataDir)
    * [`Arguments.getZinggModelDir()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getZinggModelDir)
    * [`Arguments.getZinggTrainingDataMarkedDir()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getZinggTrainingDataMarkedDir)
    * [`Arguments.getZinggTrainingDataUnmarkedDir()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.getZinggTrainingDataUnmarkedDir)
    * [`Arguments.setArgs()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setArgs)
    * [`Arguments.setColumn()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setColumn)
    * [`Arguments.setData()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setData)
    * [`Arguments.setFieldDefinition()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setFieldDefinition)
    * [`Arguments.setLabelDataSampleSize()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setLabelDataSampleSize)
    * [`Arguments.setModelId()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setModelId)
    * [`Arguments.setNumPartitions()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setNumPartitions)
    * [`Arguments.setOutput()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setOutput)
    * [`Arguments.setStopWordsCutoff()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setStopWordsCutoff)
    * [`Arguments.setTrainingSamples()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setTrainingSamples)
    * [`Arguments.setZinggDir()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.setZinggDir)
    * [`Arguments.writeArgumentsToJSON()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.writeArgumentsToJSON)
    * [`Arguments.writeArgumentsToJSONString()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Arguments.writeArgumentsToJSONString)
  * [`ClientOptions`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions)
    * [`ClientOptions.COLUMN`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.COLUMN)
    * [`ClientOptions.CONF`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.CONF)
    * [`ClientOptions.EMAIL`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.EMAIL)
    * [`ClientOptions.LICENSE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.LICENSE)
    * [`ClientOptions.LOCATION`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.LOCATION)
    * [`ClientOptions.MODEL_ID`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.MODEL_ID)
    * [`ClientOptions.PHASE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.PHASE)
    * [`ClientOptions.REMOTE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.REMOTE)
    * [`ClientOptions.ZINGG_DIR`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.ZINGG_DIR)
    * [`ClientOptions.getClientOptions()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.getClientOptions)
    * [`ClientOptions.getConf()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.getConf)
    * [`ClientOptions.getLocation()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.getLocation)
    * [`ClientOptions.getOptionValue()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.getOptionValue)
    * [`ClientOptions.getPhase()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.getPhase)
    * [`ClientOptions.hasLocation()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.hasLocation)
    * [`ClientOptions.setOptionValue()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.setOptionValue)
    * [`ClientOptions.setPhase()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ClientOptions.setPhase)
  * [`FieldDefinition`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.FieldDefinition)
    * [`FieldDefinition.getFieldDefinition()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.FieldDefinition.getFieldDefinition)
    * [`FieldDefinition.setStopWords()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.FieldDefinition.setStopWords)
    * [`FieldDefinition.stringify()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.FieldDefinition.stringify)
  * [`Zingg`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg)
    * [`Zingg.execute()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.execute)
    * [`Zingg.executeLabel()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.executeLabel)
    * [`Zingg.executeLabelUpdate()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.executeLabelUpdate)
    * [`Zingg.getArguments()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getArguments)
    * [`Zingg.getMarkedRecords()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getMarkedRecords)
    * [`Zingg.getMarkedRecordsStat()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getMarkedRecordsStat)
    * [`Zingg.getMatchedMarkedRecordsStat()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getMatchedMarkedRecordsStat)
    * [`Zingg.getOptions()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getOptions)
    * [`Zingg.getUnmarkedRecords()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getUnmarkedRecords)
    * [`Zingg.getUnmatchedMarkedRecordsStat()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getUnmatchedMarkedRecordsStat)
    * [`Zingg.getUnsureMarkedRecordsStat()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.getUnsureMarkedRecordsStat)
    * [`Zingg.init()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.init)
    * [`Zingg.initAndExecute()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.initAndExecute)
    * [`Zingg.processRecordsCli()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.processRecordsCli)
    * [`Zingg.processRecordsCliLabelUpdate()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.processRecordsCliLabelUpdate)
    * [`Zingg.setArguments()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.setArguments)
    * [`Zingg.setOptions()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.setOptions)
    * [`Zingg.writeLabelledOutput()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.writeLabelledOutput)
    * [`Zingg.writeLabelledOutputFromPandas()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.Zingg.writeLabelledOutputFromPandas)
  * [`ZinggWithSpark`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.ZinggWithSpark)
  * [`getDfFromDs()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getDfFromDs)
  * [`getGateway()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getGateway)
  * [`getJVM()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getJVM)
  * [`getPandasDfFromDs()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getPandasDfFromDs)
  * [`getSparkContext()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getSparkContext)
  * [`getSparkSession()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getSparkSession)
  * [`getSqlContext()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.getSqlContext)
  * [`initClient()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.initClient)
  * [`initDataBricksConectClient()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.initDataBricksConectClient)
  * [`initSparkClient()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.initSparkClient)
  * [`parseArguments()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.client.parseArguments)
  * [zingg.pipes](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg-pipes)
  * [`BigQueryPipe`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe)
    * [`BigQueryPipe.CREDENTIAL_FILE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.CREDENTIAL_FILE)
    * [`BigQueryPipe.TABLE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.TABLE)
    * [`BigQueryPipe.TEMP_GCS_BUCKET`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.TEMP_GCS_BUCKET)
    * [`BigQueryPipe.VIEWS_ENABLED`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.VIEWS_ENABLED)
    * [`BigQueryPipe.setCredentialFile()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.setCredentialFile)
    * [`BigQueryPipe.setTable()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.setTable)
    * [`BigQueryPipe.setTemporaryGcsBucket()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.setTemporaryGcsBucket)
    * [`BigQueryPipe.setViewsEnabled()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.BigQueryPipe.setViewsEnabled)
  * [`CsvPipe`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.CsvPipe)
    * [`CsvPipe.setDelimiter()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.CsvPipe.setDelimiter)
    * [`CsvPipe.setHeader()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.CsvPipe.setHeader)
    * [`CsvPipe.setLocation()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.CsvPipe.setLocation)
  * [`Pipe`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.Pipe)
    * [`Pipe.addProperty()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.Pipe.addProperty)
    * [`Pipe.getPipe()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.Pipe.getPipe)
    * [`Pipe.setSchema()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.Pipe.setSchema)
    * [`Pipe.toString()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.Pipe.toString)
  * [`SnowflakePipe`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe)
    * [`SnowflakePipe.DATABASE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.DATABASE)
    * [`SnowflakePipe.DBTABLE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.DBTABLE)
    * [`SnowflakePipe.PASSWORD`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.PASSWORD)
    * [`SnowflakePipe.SCHEMA`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.SCHEMA)
    * [`SnowflakePipe.URL`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.URL)
    * [`SnowflakePipe.USER`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.USER)
    * [`SnowflakePipe.WAREHOUSE`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.WAREHOUSE)
    * [`SnowflakePipe.setDatabase()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setDatabase)
    * [`SnowflakePipe.setDbTable()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setDbTable)
    * [`SnowflakePipe.setPassword()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setPassword)
    * [`SnowflakePipe.setSFSchema()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setSFSchema)
    * [`SnowflakePipe.setURL()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setURL)
    * [`SnowflakePipe.setUser()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setUser)
    * [`SnowflakePipe.setWarehouse()`](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/zingg.md#zingg.pipes.SnowflakePipe.setWarehouse)

## API Reference

* [Module Index](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/py-modindex.md)
* [Index](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/genindex.md)
* [Search Page](https://github.com/zinggAI/zingg/blob/0.5.0/docs/python/markdown/search.md)

## Example API Usage

```python
from zingg.client import *
from zingg.pipes import *

#build the arguments for zingg
args = Arguments()
#set field definitions
fname = FieldDefinition("fname", "string", MatchType.FUZZY)
lname = FieldDefinition("lname", "string", MatchType.FUZZY)
stNo = FieldDefinition("stNo", "string", MatchType.FUZZY)
add1 = FieldDefinition("add1","string", MatchType.FUZZY)
add2 = FieldDefinition("add2", "string", MatchType.FUZZY)
city = FieldDefinition("city", "string", MatchType.FUZZY)
areacode = FieldDefinition("areacode", "string", MatchType.FUZZY)
state = FieldDefinition("state", "string", MatchType.FUZZY)
dob = FieldDefinition("dob", "string", MatchType.FUZZY)
ssn = FieldDefinition("ssn", "string", MatchType.FUZZY)

fieldDefs = [fname, lname, stNo, add1, add2, city, areacode, state, dob, ssn]

args.setFieldDefinition(fieldDefs)
#set the modelid and the zingg dir
args.setModelId("100")
args.setZinggDir("models")
args.setNumPartitions(4)
args.setLabelDataSampleSize(0.5)

#reading dataset into inputPipe and settint it up in 'args'
#below line should not be required if you are reading from in memory dataset
#in that case, replace df with input df
schema = "id string, fname string, lname string, stNo string, add1 string, add2 string, city string, areacode string, state string, dob string, ssn  string"
inputPipe = CsvPipe("testFebrl", "examples/febrl/test.csv", schema)
args.setData(inputPipe)
outputPipe = CsvPipe("resultFebrl", "/tmp/febrlOutput")

args.setOutput(outputPipe)

options = ClientOptions([ClientOptions.PHASE,"match"])

#Zingg execution for the given phase
zingg = Zingg(args, options)
zingg.initAndExecute()
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.zingg.ai/0.5.0/working-with-python/index.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
