提交 d0e4299c 编写于 作者: D DebugIsFalse

feature: add source

上级 5a0a6200
...@@ -14,9 +14,11 @@ ...@@ -14,9 +14,11 @@
v-model="selectedRepo" v-model="selectedRepo"
:options="repos" :options="repos"
placeholder="选择 GitHub 项目" placeholder="选择 GitHub 项目"
value-attribute="label"
option-attribute="label"
searchable searchable
> >
<UButton color="gray" variant="ghost" trailing-icon="i-heroicons-chevron-down-20-solid" :label="selectedRepo" /> <UButton color="gray" variant="ghost" trailing-icon="i-heroicons-chevron-down-20-solid" :label="selectedRepo || '选择 GitHub 项目'" />
</USelectMenu> </USelectMenu>
<UButton <UButton
trailing-icon="i-heroicons-chevron-right-20-solid" trailing-icon="i-heroicons-chevron-right-20-solid"
...@@ -31,8 +33,11 @@ ...@@ -31,8 +33,11 @@
const { fetchRequest } = useFetchRequest() const { fetchRequest } = useFetchRequest()
const emits = defineEmits([ 'search' ]) const emits = defineEmits([ 'search' ])
const query = ref('') const query = ref('')
const selectedRepo = ref('https://github.com/keycloak/keycloak.git') const selectedRepo = ref(null)
const repos = ['keycloak', 'ViewUIPlus'] const repos = ref([
{ url: 'https://github.com/allwefantasy/byzer-llm.git', label: 'byzer-llm', branch: 'master' },
{ url: 'https://github.com/keycloak/keycloak.git', label: 'keycloak', branch: 'master' }
])
const loading = ref(false); const loading = ref(false);
const handleSearch = async () => { const handleSearch = async () => {
if (loading.value) return; if (loading.value) return;
...@@ -44,6 +49,7 @@ const handleSearch = async () => { ...@@ -44,6 +49,7 @@ const handleSearch = async () => {
} }
}); });
if (result && result.data) { if (result && result.data) {
const currentRepo = repos.value.find(item => item.label === selectedRepo.value);
navigateTo(`/search/${result.data.c_id}?query=${query.value}&repo=${selectedRepo.value}`); navigateTo(`/search/${result.data.c_id}?query=${query.value}&repo=${selectedRepo.value}`);
nextTick(() => { nextTick(() => {
loading.value = false; loading.value = false;
......
...@@ -140,10 +140,15 @@ ...@@ -140,10 +140,15 @@
const toast = useToast() const toast = useToast()
const route = useRoute() const route = useRoute()
const { fetchRequest } = useFetchRequest() const { fetchRequest } = useFetchRequest()
const repos = getMockRepo();
// todo mock
const repoItem = repos.find(item => route.query.repo === item.label);
const state = reactive({ const state = reactive({
query: route.query.query || '', query: route.query.query || '',
repo: route.query.repo || '', repo: route.query.repo || '',
id: route.params.id id: route.params.id,
branch: repoItem.branch,
gitPath: repoItem.url
}) })
const isEditTitle = ref(false) const isEditTitle = ref(false)
const titleRef = ref(null) const titleRef = ref(null)
...@@ -206,7 +211,6 @@ const handleFormFetchData = (fetchData) => { ...@@ -206,7 +211,6 @@ const handleFormFetchData = (fetchData) => {
const index = data.value.length === 0 ? 0 : data.value.length - 1; const index = data.value.length === 0 ? 0 : data.value.length - 1;
data.value[index] = data.value[index] || {}; data.value[index] = data.value[index] || {};
const { meta, choices } = message; const { meta, choices } = message;
console.log(`meta:`, meta, choices)
if (meta.type === 'answer') { if (meta.type === 'answer') {
Object.assign(data.value[index], { Object.assign(data.value[index], {
question: state.query, question: state.query,
...@@ -229,12 +233,23 @@ const handleFormFetchData = (fetchData) => { ...@@ -229,12 +233,23 @@ const handleFormFetchData = (fetchData) => {
} }
} }
} }
const handleUpdateSource = () => {
const index = data.value.length === 0 ? 0 : data.value.length - 1;
data.value[index] = data.value[index] || {};
// https://github.com/allwefantasy/byzer-llm/blob/master/tests/functions_suite.py
const endWidthGit = state.gitPath.endsWith('.git');
const baseUrl = endWidthGit ? state.gitPath.slice(0, state.gitPath.length - 4) : state.gitPath;
storeSource = storeSource.map((item) => {
item.repo = state.repo;
item.link = `${baseUrl}/blob/${state.branch}/${item.label}`
return item;
})
Object.assign(data.value[index], { source: storeSource });
}
const handleMessage = (event) => { const handleMessage = (event) => {
if (event.data === markedEnd) { if (event.data === markedEnd) {
asking.value = false; asking.value = false;
const index = data.value.length === 0 ? 0 : data.value.length - 1; handleUpdateSource();
data.value[index] = data.value[index] || {};
Object.assign(data.value[index], { source: storeSource });
return; return;
} }
handleFormFetchData(event.data) handleFormFetchData(event.data)
...@@ -248,14 +263,14 @@ const handleError = (event) => { ...@@ -248,14 +263,14 @@ const handleError = (event) => {
handleStopGenerate(); handleStopGenerate();
} }
const generateFetchData = (query) => { const generateFetchData = (query) => {
const { repo, id } = state; const { gitPath, id } = state;
const messages = []; const messages = [];
messages.push({ role: 'user', content: query }); messages.push({ role: 'user', content: query });
aiChatController = new AbortController(); aiChatController = new AbortController();
asking.value = true; asking.value = true;
fetchEventSource('/v1/chat/completions', { fetchEventSource('/v1/chat/completions', {
params: { params: {
repo_path: repo, repo_path: gitPath,
c_id: id, c_id: id,
stream: true, stream: true,
messages, messages,
......
export default () => {
return [
{ url: 'https://github.com/allwefantasy/byzer-llm.git', label: 'byzer-llm', branch: 'master' },
{ url: 'https://github.com/keycloak/keycloak.git', label: 'keycloak', branch: 'master' }
]
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册