Streamlit detected Code Language automatically. How?

I am displying answers from ChatGPT in Streamlit just using st.write . Yesterday I learned here, that indented text will be shown as a code_block.

Recently thought, it detected the programming language automatically and I would like to reproduce that on purpose. Sadly I was not able to catch the response in text this time so I do not have a reference and I can’t seem to reproduce it either.

Any ideas or leads on this are highly appreciated

Hey @jo_jo,

Do you mean that st.write detected the programming language of the response from GPT automatically?

Yes that is exactly what I meant. Maybe it was setup in the response, similar to indentet text becoming code_block but sadly I can’t tell the reason for getting the language.

I think what probably happened is that the response from GPT included the programming language, e.g. (sharing a screenshot to prevent Discourse from formatting this as code)
Screenshot 2023-09-07 at 9.26.45 AM

Happy to dig in further if you can share the app

1 Like

Thank you very much!
I’ll try this in a few variations and give an update if I find anythinig interesting.

As far as the code goes. I send a prompt like this (The added text is what I am experimenting with) :

prompt = user_input + β€˜(if writing code, start with a summary, then start with < code> and end it with </ code>) around every code. Then put the used language in on the End of the code’

Then sending out the request and I indent the code part in the response:

pattern = re.compile(r'(<code>.*?</code>)', re.DOTALL)

# Split the input text into segments using the pattern
segments = pattern.split(response)

# Process each segment and reassemble the text
formatted_text = ""
for segment in segments:
    if segment.startswith('<code>'):
        # Indent the code within <code> and </code> tags
        code_text = segment[6:-7].strip()  # Remove <code> and </code> tags
        indented_lines = code_text.splitlines()
        indented_text = "\n".join(["      " + line for line in indented_lines])
        formatted_text += "\n" + indented_text + "\n"
    else:
        # Keep text outside of <code> and </code> tags unchanged
        formatted_text += segment 

     response = formatted_text.lstrip()

And somehow in one single instance, the programming language was detetcted before.
FYI I added the summary infront of the code because it makes the indentation somehow buggy if there is no previous text otherwise.

This worked exactly as you said with β€˜β€™'.
Thank you very much!

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.