Coloring's picture
feat: add layout template `coder_artifacts`
f18a2c3
import gradio as gr
import modelscope_studio.components.antd as antd
import modelscope_studio.components.antdx as antdx
import modelscope_studio.components.base as ms
items = [
{
"key": '1',
"role": "ai-markdown",
"content": "`Hello, world!`"
},
{
"key": '2',
"role": "ai-error-message",
"content": "Error message"
},
{
"key":
'3',
"role":
'ai-suggestion',
"content": [
{
"key": '1',
"description":
'How to rest effectively after long hours of work?',
},
{
"key":
'2',
"description":
'What are the secrets to maintaining a positive mindset?',
},
{
"key": '3',
"description": 'How to stay calm under immense pressure?',
},
],
},
{
"key":
'4',
"role":
'ai-file',
"content": [
{
"uid": '1',
"name": 'excel-file.xlsx',
"size": 111111,
"description": 'Checking the data',
},
{
"uid": '2',
"name": 'word-file.docx',
"size": 222222,
"status": 'uploading',
"percent": 23,
},
],
},
]
with gr.Blocks() as demo:
with ms.Application():
with antdx.XProvider():
antd.Typography.Paragraph(
"Customize the content of the bubble list, which is very useful for personalized customization scenarios."
)
with antdx.Bubble.List(items=items) as bubble_list:
# Define Roles
with ms.Slot("roles"):
with antdx.Bubble.List.Role(role="ai-markdown",
placement="start"):
with ms.Slot("avatar"):
with antd.Avatar(elem_style=dict(
backgroundColor="#fde3cf")):
with ms.Slot("icon"):
antd.Icon("UserOutlined")
with ms.Slot("messageRender",
params_mapping="(content) => content"):
ms.Markdown()
with antdx.Bubble.List.Role(role="ai-error-message",
placement="start"):
with ms.Slot("avatar"):
with antd.Avatar(elem_style=dict(
backgroundColor="#fde3cf")):
with ms.Slot("icon"):
antd.Icon("UserOutlined")
with ms.Slot("messageRender",
params_mapping="(content) => content"):
antd.Typography.Text(type="danger")
with antdx.Bubble.List.Role(
role="ai-suggestion",
placement="start",
variant="borderless",
avatar=dict(style=dict(visibility='hidden'))):
with ms.Slot("messageRender",
params_mapping="(items) => ({ items })"):
prompts = antdx.Prompts(vertical=True)
with antdx.Bubble.List.Role(
role="ai-file",
placement="start",
variant="borderless",
avatar=dict(style=dict(visibility='hidden'))):
with ms.Slot("messageRender",
params_mapping="""(content) => {
return {
each: content?.map(item => ({ item }))
}
}"""):
with antd.Flex(vertical=True, gap="middle"):
with ms.Each(as_item="each"):
antdx.Attachments.FileCard()
if __name__ == "__main__":
demo.queue().launch()