当前位置:   article > 正文

批量使用API调用langchain-chatchat知识库能力_langchain chatchat api

langchain chatchat api

大模型相关目录

大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。

  1. 大模型应用向开发路径及一点个人思考
  2. 大模型应用开发实用开源项目汇总
  3. 大模型问答项目问答性能评估方法
  4. 大模型数据侧总结
  5. 大模型token等基本概念及参数和内存的关系
  6. 大模型应用开发-华为大模型生态规划
  7. 从零开始的LLaMA-Factory的指令增量微调
  8. 基于实体抽取-SMC-语义向量的大模型能力评估通用算法(附代码)
  9. 基于Langchain-chatchat的向量库构建及检索(附代码)
  10. 一文教你成为合格的Prompt工程师
  11. 最简明的大模型agent教程
  12. 批量使用API调用langchain-chatchat知识库能力


批量使用API调用langchain-chatchat知识库能力

import requests
import json
from concurrent.futures import ThreadPoolExecutor, as_completed
import pandas as pd



# API的URL
url = 'http://localhost:7861/chat/knowledge_base_chat'

# 定义发送请求的函数
def send_request(question, index):
    data = {
        "query": question,
        "knowledge_base_name": "ytzw_240327",
        "top_k": 3,
        "score_threshold": 1,
        "stream": False,
        "model_name": "ytzw_llm-Chat",
        "temperature": 0.7,
        "max_tokens": 0,
        "prompt_name": "default"
    }
    json_data = json.dumps(data)
    response = requests.post(url, data=json_data, headers={'Content-Type': 'application/json'})
    
    response_text = response.text
    # 找到'data: '的位置
    prefix_pos = response_text.find('data: ')
    if prefix_pos != -1:
        # 如果找到了'data: ',则从这个位置加上它的长度开始解析
        json_str = response_text[prefix_pos + len('data: '):]
    else:
        # 如果没有找到'data: ',则假设整个响应就是JSON
        json_str = response_text

    # 移除可能存在的尾部空白字符和控制字符
    json_str = json_str.strip()
    
    # 解析JSON字符串
    try:
        response_json = json.loads(json_str)
        print(response_json)
        answer = response_json.get('answer', '')
        docs = response_json.get('docs', [])
        # 返回答复、文档和问题索引
        return answer, docs, index
    except json.JSONDecodeError as e:
        print(f"解析JSON时出错: {e}")
        # 发生错误时也返回索引,以便能够将错误信息放在正确的位置
        return '', [], index
    

data = pd.read_excel(r'C:\Users\12258\Desktop\test_data.xlsx')

# 生成问题列表
questions = data['question'][:1]

# 初始化列表收集答复和文档
answers = [''] * len(data)  # 使用与df相同长度的列表,初始值为空字符串
docs_list = [[] for _ in range(len(data))]  # 使用与df相同长度的列表,初始值为空列表

# 使用ThreadPoolExecutor来并发发送请求
with ThreadPoolExecutor(max_workers=1) as executor:
    # 在提交任务时传递问题的索引
    future_to_index = {executor.submit(send_request, question, i): i for i, question in enumerate(questions)}
    print(future_to_index)
    for future in as_completed(future_to_index):
        result = future.result()
        answer, docs, index = result
        # 使用返回的索引更新答复和文档
        answers[index] = answer
        docs_list[index] = docs

        print(f'序号: {index}, 答案: {answer}, 来源: {docs}')
        # 每处理10个问题,保存一次df
        if (index + 1) % 10 == 0 or (index + 1) == len(questions):
            pd.DataFrame(answers).to_csv("test_data_updated.csv", index=False)
  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/674648
推荐阅读
相关标签
  

闽ICP备14008679号