Skip to content

Repository files navigation

Text to street assistant (chatbot, powered by OpenAI GPT model)

The assistant's purpose is to use the given text description of the street to create a corresponding 3D model of the street on the 3DStreet.org portal. The response is returned as a URL in next format: 3dstreet.app/#url_encoded_json=... or it could be also optional format: 3dstreet.app/#query=street_description

Main parts of code:

functions/text-to-street.py contains code for generating the assistant via the OpenAI API. The chatCompletion function is used to create an assistant, as well as the OpenAI function_call feature to return a response from the assistant in the form of JSON of a given structure. The JSON structure has a streetmix API JSON structure (simplified for 3DStreet forming, not all properties from streetmix), which describes street segments in streetmix format. Based on this answer, a 3D street will be generated on the side of the 3DStreet portal. To generate a 3D street on the 3DStreet.app side, the response from the model in the form of encoded json is passed to the url_encoded_json parameter of the http request to 3dstreet.app: 3dstreet.app/#url_encoded_json=...

functions/main.py contains a function to respond to a user's http request (via a URL provided by firebase functions).

Description of the request URL to the firebase function

The user's request with a text description of the street is transmitted in the query parameter of the http request or by json (if the mimetype of request is application/json): {'query': '...'}. After deploying the firebase function to the firebase server, a URL is provided to access the function described here.

Next steps

  • create JSON with a description of segments and their variants supported in 3dStreet
  • use it to check the model's response and to generate a better assistant's response
  • continue the dialogue after generating the street to correct/change street parameters

About

Text to street bot

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages