提交 d0e4299c 编写于 作者: D DebugIsFalse

feature: add source

上级 5a0a6200
......@@ -14,9 +14,11 @@
v-model="selectedRepo"
:options="repos"
placeholder="选择 GitHub 项目"
value-attribute="label"
option-attribute="label"
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>
<UButton
trailing-icon="i-heroicons-chevron-right-20-solid"
......@@ -31,8 +33,11 @@
const { fetchRequest } = useFetchRequest()
const emits = defineEmits([ 'search' ])
const query = ref('')
const selectedRepo = ref('https://github.com/keycloak/keycloak.git')
const repos = ['keycloak', 'ViewUIPlus']
const selectedRepo = ref(null)
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 handleSearch = async () => {
if (loading.value) return;
......@@ -44,6 +49,7 @@ const handleSearch = async () => {
}
});
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}`);
nextTick(() => {
loading.value = false;
......
......@@ -140,10 +140,15 @@
const toast = useToast()
const route = useRoute()
const { fetchRequest } = useFetchRequest()
const repos = getMockRepo();
// todo mock
const repoItem = repos.find(item => route.query.repo === item.label);
const state = reactive({
query: route.query.query || '',
repo: route.query.repo || '',
id: route.params.id
id: route.params.id,
branch: repoItem.branch,
gitPath: repoItem.url
})
const isEditTitle = ref(false)
const titleRef = ref(null)
......@@ -206,7 +211,6 @@ const handleFormFetchData = (fetchData) => {
const index = data.value.length === 0 ? 0 : data.value.length - 1;
data.value[index] = data.value[index] || {};
const { meta, choices } = message;
console.log(`meta:`, meta, choices)
if (meta.type === 'answer') {
Object.assign(data.value[index], {
question: state.query,
......@@ -229,12 +233,23 @@ const handleFormFetchData = (fetchData) => {
}
}
}
const handleMessage = (event) => {
if (event.data === markedEnd) {
asking.value = false;
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) => {
if (event.data === markedEnd) {
asking.value = false;
handleUpdateSource();
return;
}
handleFormFetchData(event.data)
......@@ -248,14 +263,14 @@ const handleError = (event) => {
handleStopGenerate();
}
const generateFetchData = (query) => {
const { repo, id } = state;
const { gitPath, id } = state;
const messages = [];
messages.push({ role: 'user', content: query });
aiChatController = new AbortController();
asking.value = true;
fetchEventSource('/v1/chat/completions', {
params: {
repo_path: repo,
repo_path: gitPath,
c_id: id,
stream: true,
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.
先完成此消息的编辑!
想要评论请 注册