File size: 6,084 Bytes
c793c5f
fcb444c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e66d039
fcb444c
e66d039
fcb444c
 
 
 
 
 
e66d039
fcb444c
 
 
 
 
 
 
 
 
e66d039
 
fcb444c
e66d039
fcb444c
 
e66d039
fcb444c
 
e66d039
fcb444c
 
 
 
e66d039
fcb444c
e66d039
fcb444c
e66d039
fcb444c
e66d039
fcb444c
 
 
 
 
 
e66d039
fcb444c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e66d039
 
fcb444c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e66d039
 
 
 
 
fcb444c
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import streamlit as st
import os
import openai
import backoff
# lucaslane5h8a@hotmail.com----hK4H0M64ihK4H0M64i----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
# os.environ["http_proxy"]="127.0.0.1:7890"
# os.environ["https_proxy"]="127.0.0.1:7890"
openai.api_key="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"

st.set_page_config(
    page_title="首页",
    page_icon="🚀",
    layout="centered",
    initial_sidebar_state="auto",
)

# set_page_config配置Streamlit应用程序的页面设置。自定义应用程序的标题、图标、布局等方面,以提供更好的用户体验。
# 注意:set_page_config必须在应用程序的所有其他元素之前调用,否则会引发异常。
# 参数说明:
# page_title:可选参数,用于设置应用程序的标题,通常显示在浏览器的标签页上。
# page_icon:可选参数,用于设置应用程序的图标,通常显示在浏览器标签页和书签栏中。
# layout:可选参数,用于设置应用程序的布局方式,可以是"centered"(居中)或"wide"(宽屏)。
# initial_sidebar_state:可选参数,用于设置侧边栏的初始状态。可以是"auto"(自动展开)或"collapsed"(折叠)


def init_sidebar():
    """
    初始化侧边栏
    :return:
    """

    st.sidebar.title("关于我们")

    markdown = """
    汇报人:高洺策
    
    其他小组成员:周小渲(组长)、王瑞琪、杨畔、宣乐卓、雷友素、单宁、王钦、刘亭秀、吴林泽、武俊呈
    """
    st.sidebar.info(markdown)

    logo = "./image/laomo.png"
    st.sidebar.image(logo)
    st.sidebar.title("劳模风范")
    st.sidebar.image("./image/laomo1.png", use_column_width=True)
    st.sidebar.image("./image/laomo2.png", use_column_width=True)
    st.sidebar.image("./image/laomo3.png", use_column_width=True)
    st.sidebar.image("./image/gongjiang1.png", use_column_width=True)
    st.sidebar.image("./image/gongjiang2.png", use_column_width=True)
    st.sidebar.image("./image/gongjiang3.png", use_column_width=True)


def init_content():
    """
    初始化内容
    :return:
    """
    # Customize page title
    st.title("劳模智能体(Agent)")

    st.markdown(
        """
        劳模Agent,即劳模智能体,该智能体可以讲述相关劳模的事迹以及与人类进行沟通,可以作为劳模学习和教学的辅助工具。
        """
    )
    # 插入图片,让图片自适应

    st.image("./image/title.png",use_column_width=True)

    # st.header("Instructions")
    #
    # markdown = """
    # 1. For the [GitHub repository](https://github.com/giswqs/geemap-apps) or [use it as a template](https://github.com/new?template_name=geemap-apps&template_owner=giswqs) for your own project.
    # 2. Customize the sidebar by changing the sidebar text and logo in each Python files.
    # 3. Find your favorite emoji from https://emojipedia.org.
    # 4. Add a new app to the `pages/` directory with an emoji in the file name, e.g., `1_🚀_Chart.py`.
    # """
    #
    # st.markdown(markdown)

    # 我要构建一个交互式的应用程序,让用户可以在应用程序中输入一些内容,然后应用程序会根据用户的输入做出相应的响应。
    # 输入框,让用户输入内容
    st.header("输入--")
    text_area = st.text_area("", "在这里输入你的需求~~~~~~~~比如 你是谁?")

    # 如果文本内容等于“你是谁?”,则输出“我是劳模智能体,我可以讲述相关劳模的事迹以及与人类进行沟通,可以作为劳模学习和教学的辅助工具。”
    # 写一个标题

    st.header("输出--")
    # 定义一个输出框,默认输出“在这里输出模型回复~~~~~~~~”
    text = st.empty()
    # 修改输出框为多行文本框
    # output_area = st.text_area("", "在这里输出模型回复~~~~~~~~")
    # text.text("在这里输出模型回复~~~~~~~~")
    if text_area == "你是谁?":
        # st.success("我是劳模智能体,我可以讲述相关劳模的事迹以及与人类进行沟通,可以作为劳模学习和教学的辅助工具。")
        # 在输出框output_area中显示文本内容"我是劳模智能体,我可以讲述相关劳模的事迹以及与人类进行沟通,可以作为劳模学习和教学的辅助工具。你可以随意向我提出问题,我会尽力回答你的问题。"
        st.write("我是劳模智能体,我可以讲述相关劳模的事迹以及与人类进行沟通,可以作为劳模学习和教学的辅助工具。你可以随意向我提出问题,我会尽力回答你的问题。")

    else:
        @backoff.on_exception(
            backoff.fibo,
                # https://platform.openai.com/docs/guides/error-codes/python-library-error-types
            (
                openai.error.APIError,
                openai.error.Timeout,
                openai.error.RateLimitError,
                openai.error.ServiceUnavailableError,
                openai.error.APIConnectionError,
                KeyError,
            ),
        )
        def call_lm(model,messages,max_tokens,temperature,stop_words):
            response = openai.ChatCompletion.create(
                model=model,
                messages=messages,
                max_tokens=max_tokens,
                temperature=temperature,
                stop=stop_words,
            )
            return response.choices[0].message["content"].strip()
        model = "gpt-3.5-turbo-0613"
        messages=[
            {"role": "system", "content": "你是一个劳模智能体,了解中国的劳模事迹。下面你需要回答用户提出的问题"},
            {"role": "user", "content": text_area},
        ]
        print("messages",messages)
        max_tokens = 256
        temperature = 0.9
        stop_words = []
        response = call_lm(model,messages,max_tokens,temperature,stop_words)
        print("response",response)
        st.write(response)




if __name__ == '__main__':
    init_sidebar()
    init_content()
    pass