테스트
This commit is contained in:
73
app.py
73
app.py
@@ -103,11 +103,7 @@ def query_select_summarize_stream(results, query, ai, min_similarity: float = 0.
|
||||
context_parts.append(f"[유사도: {sim:.3f}]\n{doc}")
|
||||
context = "\n\n".join(context_parts)
|
||||
else :
|
||||
print('일반', results.get('documents'))
|
||||
context_parts = [f'검색된 사용자 수는 {len(results.get('ids'))}']
|
||||
docs = [f"[{d[d.find('[이름]'): d.find('[', d.find('[이름]')+1)]} {d[d.find('[부서]'): d.find('[', d.find('[부서]')+1)]}]" for d in results.get('documents')]
|
||||
context = ",".join(context_parts + docs)
|
||||
print(context)
|
||||
context = results
|
||||
|
||||
# 모델 로드
|
||||
model, tokenizer = get_qwen_model()
|
||||
@@ -145,7 +141,7 @@ def query_select_summarize_stream(results, query, ai, min_similarity: float = 0.
|
||||
generation_kwargs = dict(
|
||||
**model_inputs,
|
||||
streamer=streamer,
|
||||
max_new_tokens=600,
|
||||
max_new_tokens=400,
|
||||
do_sample=True,
|
||||
temperature=0.3,
|
||||
top_p=0.9,
|
||||
@@ -258,19 +254,40 @@ async def set_data(query: Item):
|
||||
클라이언트로부터 받은 인사 데이터를 자연어 문장으로 변환하여 벡터 DB에 저장합니다.
|
||||
기존 세션 데이터는 삭제 후 재생성됩니다.
|
||||
"""
|
||||
# 기존 데이터 삭제
|
||||
collection.delete(
|
||||
where={"sessionId": query.sessionId}
|
||||
)
|
||||
|
||||
# 삭제 확인 (디버깅용)
|
||||
remaining_count = collection.get(where={"sessionId": query.sessionId})
|
||||
print(f"남은 데이터 수: {len(remaining_count['ids'])}")
|
||||
|
||||
# # 기존 데이터 삭제
|
||||
# collection.delete(
|
||||
# where={"sessionId": query.sessionId}
|
||||
# )
|
||||
#
|
||||
# # 삭제 확인 (디버깅용)
|
||||
# remaining_count = collection.get(where={"sessionId": query.sessionId})
|
||||
# print(f"남은 데이터 수: {len(remaining_count['ids'])}")
|
||||
|
||||
depts = []
|
||||
users = []
|
||||
for n in query.context :
|
||||
if n['userYn'] == False :
|
||||
depts.append(n)
|
||||
else :
|
||||
users.append(n)
|
||||
|
||||
print(len(depts), len(users))
|
||||
|
||||
store_data[query.sessionId] = query.context
|
||||
init(query.sessionId, query.context)
|
||||
|
||||
results = []
|
||||
for d in depts :
|
||||
subStr = f'[부서명] : {d['deptNm']} [상위부서명] : {d['pDeptNm']} [부서장] : {d['chiefDisplayNm']}\n'
|
||||
inUsers = list(filter(lambda u : u['deptCd'] == d['deptCd'], users ))
|
||||
reUsers = []
|
||||
for iu in inUsers :
|
||||
reUsers.append(f'** 이름 : {iu['name']} 사번 : {iu['sabun']} 직급 : {iu['gradeNm']} 직위 : {iu['ptsnNm']} **')
|
||||
subStr += f'[직원수] : {len(inUsers)}\n'
|
||||
subStr += f'[직원명단] : {', '.join(reUsers)}'
|
||||
results.append(subStr)
|
||||
# init(query.sessionId, query.context)
|
||||
|
||||
store_data[query.sessionId] = results
|
||||
return {"status": "success", "message": f"{len(query.context)}건의 데이터가 로드되었습니다."}
|
||||
|
||||
|
||||
@@ -279,16 +296,20 @@ def question(sessionId: str, query: str):
|
||||
"""
|
||||
질의응답 API 엔드포인트
|
||||
"""
|
||||
type = query_summarize_simple(query=query)
|
||||
print(type)
|
||||
if(type == '99') :
|
||||
results, keyword = query_select(sessionId, query, False)
|
||||
print(f'단순질문 AI : {len(results)}')
|
||||
generate = query_select_summarize_stream(results, query=keyword, ai=True)
|
||||
# 부서 총직원수
|
||||
else :
|
||||
results, keyword = query_select(sessionId, query, True)
|
||||
generate = query_select_summarize_stream(results, query=keyword, ai=False)
|
||||
# type = query_summarize_simple(query=query)
|
||||
# print(type)
|
||||
# if(type == '99') :
|
||||
# results, keyword = query_select(sessionId, query, False)
|
||||
# print(f'단순질문 AI : {len(results)}')
|
||||
# generate = query_select_summarize_stream(results, query=keyword, ai=True)
|
||||
# # 부서 총직원수
|
||||
# else :
|
||||
# results, keyword = query_select(sessionId, query, True)
|
||||
sessionData = store_data.get(sessionId)
|
||||
|
||||
results = '\n-------------------------------------------\n'.join(sessionData)
|
||||
print(sessionId, query)
|
||||
generate = query_select_summarize_stream(results, query, ai=False)
|
||||
|
||||
|
||||
return StreamingResponse(generate(), media_type="application/x-ndjson")
|
||||
|
||||
4
org.html
4
org.html
@@ -42,7 +42,7 @@
|
||||
<div class="container">
|
||||
<div class="chat-wrap">
|
||||
<div class="chat"></div>
|
||||
<input type="text" class="prompt" value="2직급 총 몇명이야?" placeholder="질문을 입력하고 Enter를 누르세요">
|
||||
<input type="text" class="prompt" value="발전처 직원수?" placeholder="질문을 입력하고 Enter를 누르세요">
|
||||
<!-- <input type="text" class="prompt" value="재난관리부 부서장은 누구야?" placeholder="질문을 입력하고 Enter를 누르세요">-->
|
||||
</div>
|
||||
</div>
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
const xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', `http://127.0.0.1:8000/?sessionId=20033011&query=${encodeURIComponent(query)}`);
|
||||
xhr.open('GET', `http://127.0.0.1:8000/?sessionId=psn14020&query=${encodeURIComponent(query)}`);
|
||||
|
||||
let seenBytes = 0;
|
||||
let buffer = '';
|
||||
|
||||
Reference in New Issue
Block a user