gitdeem commited on
Commit
a45f02e
1 Parent(s): d00096f

Upload 4 files

Browse files
Files changed (4) hide show
  1. Dockerfile +39 -0
  2. README.md +5 -5
  3. home.vue +90 -0
  4. logo.png +0 -0
Dockerfile ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:lts-alpine AS build
2
+
3
+ # 添加 git,以便之后能从GitHub克隆项目
4
+ RUN apk --no-cache add git
5
+
6
+ # 从 GitHub 克隆项目到 /app 目录下
7
+ RUN git clone https://github.com/Dooy/chatgpt-web-midjourney-proxy.git /app
8
+ COPY ./logo.png /app/web/src/assets/logo.png
9
+ COPY ./logo.png /app/web/src/public/favicon.ico
10
+ COPY ./home.vue /app/web/src/pages/home.vue
11
+
12
+ #COPY . /app
13
+
14
+ # RUN yarn config set registry https://mirrors.cloud.tencent.com/npm/
15
+
16
+ WORKDIR /app
17
+ RUN yarn install && yarn run build
18
+
19
+ WORKDIR /app/web
20
+ RUN yarn install && yarn run build
21
+
22
+ FROM node:20-alpine
23
+ WORKDIR /app
24
+
25
+ # Install dotenvx
26
+ RUN curl -fsS https://dotenvx.sh/ | sh
27
+
28
+ COPY .env /app
29
+
30
+ COPY --from=build /app/dist ./dist
31
+ COPY --from=build /app/backend ./backend
32
+ COPY --from=build /app/web/build ./web/build
33
+ COPY --from=build /app/package.json ./
34
+
35
+ # RUN yarn config set registry https://mirrors.cloud.tencent.com/npm/
36
+ RUN yarn install --production && yarn cache clean
37
+
38
+ EXPOSE 3000
39
+ CMD yarn run start
README.md CHANGED
@@ -1,10 +1,10 @@
1
  ---
2
- title: Sai
3
- emoji: 📉
4
- colorFrom: yellow
5
- colorTo: green
6
  sdk: docker
7
  pinned: false
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: sai
3
+ emoji: 🌍
4
+ colorFrom: blue
5
+ colorTo: pink
6
  sdk: docker
7
  pinned: false
8
+ license: mit
9
  ---
10
 
 
home.vue ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <template>
2
+ <div id="home" class="flex size-full items-center justify-center dark:bg-black">
3
+ <div class="mt-36 flex w-full flex-col gap-4 p-4 sm:-mt-28 lg:max-w-3xl xl:max-w-4xl">
4
+ <div class="flex items-center justify-center gap-2">
5
+ <img :src="logoUrl" class="w-10" />
6
+ <span class="text-3xl font-bold dark:text-gray-100">AI Search</span>
7
+ <t-tag variant="light" class="text-xs text-gray-500"></t-tag>
8
+ </div>
9
+ <SearchInputBar :autofocus="true" :loading="false" @search="search" />
10
+ <div class="my-2 flex flex-wrap items-center justify-center gap-4">
11
+ <SearchMode />
12
+ <SearCategory v-if="enableAdvanced" />
13
+ </div>
14
+ <div class="flex w-full justify-center">
15
+ <div class="flex flex-wrap justify-center gap-2">
16
+ <t-tag
17
+ v-for="(item, index) in list"
18
+ :key="index" shape="round"
19
+ variant="outline"
20
+ size="medium"
21
+ class="cursor-pointer hover:opacity-80"
22
+ @click="onQuickSearch(item)"
23
+ >
24
+ {{ item }} <RiSearch2Line class="ml-1" size="12"/>
25
+ </t-tag>
26
+ </div>
27
+ </div>
28
+ <div class="mt-4">
29
+ <PageFooter />
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup lang="tsx">
36
+ import router from '../router';
37
+ import { RiSearch2Line } from '@remixicon/vue';
38
+ import { PageFooter, SearchInputBar, SearCategory, SearchMode } from '../components';
39
+ import logoUrl from '../assets/logo.png';
40
+ import { useI18n } from 'vue-i18n';
41
+ import { computed } from 'vue';
42
+ import { useAppStore } from '../store';
43
+
44
+ const { locale } = useI18n();
45
+ const appStore = useAppStore();
46
+
47
+ const enableAdvanced = computed(() => appStore.engine === 'SEARXNG');
48
+
49
+ const quickly: Record<string, string[]> = {
50
+ zh: [
51
+ '刘亦菲《玫瑰的故事》',
52
+ '怎么使用Ollama在本地部署大模型?',
53
+ 'llama3-70b需要什么硬件配置?',
54
+ '小米su7体验怎么样?',
55
+ '《庆余年2》大结局'
56
+ ],
57
+ en: [
58
+ 'What is LLM?',
59
+ 'What is RAG?',
60
+ 'How to use LLM in enterprise?'
61
+ ]
62
+ };
63
+
64
+ const list = computed(() => {
65
+ const key = locale.value;
66
+ return quickly[key];
67
+ });
68
+
69
+ const search = (val: string) => {
70
+ if (!val) {
71
+ return;
72
+ }
73
+ router.push({
74
+ name: 'SearchPage',
75
+ query: {
76
+ q: val
77
+ }
78
+ });
79
+ };
80
+
81
+ const onQuickSearch = (val: string) => {
82
+ search(val);
83
+ };
84
+ </script>
85
+
86
+ <script lang="tsx">
87
+ export default {
88
+ name: 'HomePage'
89
+ };
90
+ </script>
logo.png ADDED