RAGFlow学习笔记二(配置模型,创建知识库,创建聊天助手)

26 阅读4分钟

1.注册,登录,配置模型

image.png

2.创建知识库

image.png

image.png

3.创建聊天助手

image.png

image.png

查看文档切片(图片也会被解析出来)

image.png

4.创建知识库

import os.path

# 导入依赖
from ragflow_sdk import RAGFlow #链接rag服务的客户端
from deep_search_pro.ragflow.rag_config import _load_ragflow_env


# 创建一个ragflow的客户端
api_key,base_url =_load_ragflow_env()
ragflow_client = RAGFlow(api_key=api_key,base_url=base_url)
# RAGFlow 文档:https://ragflow.io/docs/python_api_reference#create-dataset
# 代码创建知识库
def create_knowledge_base(knowledge_base_name, description):
    """
    创建知识库,有个名字和描述!
    名字和描述一定要准确的写!agent调用哪个聊天助手看聊天助手的描述和他对应知识库的描述!
    :param knowledge_base_name: 名字
    :param description: 描述
    :return:
    """
    ds = ragflow_client.create_dataset(name=knowledge_base_name, description=description,embedding_model="text-embedding-v3@Tongyi-Qianwen")
    # ds = ragflow_client.create_dataset(name=knowledge_base_name, description=description,embedding_model="BAAI/bge-large-zh-v1.5@BAAI")
    print(f"创建知识库成功:{ds},{ds.id}")


# 使用上传文件到知识库
def upload_file_to_knowledge_base(kb_id, file_paths):
    """
    向知识库上传文件! 文件可以是多个!!
    """
    # 1.链接ragflow的客户端
    # 2.获取传入文件的知识库对象
    datasets = ragflow_client.list_datasets(id=kb_id,page=1,page_size=10)
    dataset = datasets[0]
    # 3.文件包装成对应的上传dict格式
    document_list = [] # 存储上传文件的列表
    for file_path in file_paths:
        # file_path 文件的地址
        file_name = os.path.basename(file_path) # 获取文件名
        with open(file_path, 'rb') as f:
            blob = f.read()
            document_list.append({
                "display_name": file_name,
                "name": file_name,
                "blob": blob
            })
    # 4.进行文件上传了
    dataset.upload_documents(document_list)

if __name__ == '__main__':
    # 创建知识库
    create_knowledge_base("代码创建的知识库222", "今晚打老虎,啦啦啦啦!!",)

RAGFlow可视化界面查看:

image.png

image.png

5.代码获取聊天列表,通过聊天助手名字和聊天助手聊天

# 导入依赖
from ragflow_sdk import RAGFlow, Chat  # 链接rag服务的客户端
from ragflow.rag_config import _load_ragflow_env


# 创建一个ragflow的客户端
api_key , base_url =_load_ragflow_env()
ragflow_client = RAGFlow(api_key=api_key,base_url=base_url)



# 1. 查询现在知识库中有哪些聊天助手和对应知识库的信息 (方便我们知道rag可以给我们提供哪些数据)
def get_assistant_list():
    # 1. 创建ragflow客户端
    # 2. ragflow客户端查询所有的聊天助手 page: int = 1, page_size: int = 30
    chat_list:list[Chat] = ragflow_client.list_chats()
    # 3. 查询聊天助手的知识库信息
    count_chat_info = "" #存储所有会话信息
    for chat in chat_list:
        dataset_names = []
        dataset_list = chat.datasets #当前聊天助手关联的知识库
        if dataset_list and isinstance(dataset_list,list):
            # 知识库的name
            for dataset in dataset_list:
                print(dataset)
                print("="*150)
                dataset_names.append(dataset['name']) # 将一个助手的知识库的名字加入到列表中

        # 拼接下当前助手的信息 + 知识库信息
        # 法律资源小助手  xxxxxx  关联知识库:xx、xxx、xxx
        count_chat_info += f"助手名称:{chat.name};功能介绍:{chat.description}; 关联的知识库:{'、'.join(dataset_names)} \n"
    # 4. 拼接助手和知识库信息,返回供模型参考(lm知道你哪个助手干啥事,可以调用对应的助手)
    return count_chat_info

# 2. 对某个助手进行提问(创建会话 -》 提问 -》 删除会话)
def ask_question(chat_name,question):
    """
    向某个助手发起提问: 1. 创建一个会话 2.提问 3.关闭会话!
    :param chat_name: 助手的名字!上一个工具get_assistant_list告诉大模型的只有名字
    :param question: 本次提问的问题
    :return: 返回提问的结果
    """
    """
                                                ---> dataset 
       agent 我们 ----》 session  --》 chat(助手) ---> dataset 
                                                ---> dataset 
    """
    # 1. 创建ragflow客户端
    # 2. 查询对应name的chat
    chats = ragflow_client.list_chats(name=chat_name) #chat_name=法律援助助手
    use_chat = chats[0] #选中我们要使用的助手
    # 3. chat上创建一个会话
    session = use_chat.create_session(name="temp_session_ask")
    # 4. 使用会话进行提问
    # 返回的提问结果是流式
    response = session.ask(question = question,stream=True) #question=法律援助助手
    # 接收总结果
    result = ""
    # 流的每一部分的对象 part
    for part in response:
        # 数据存在对象中content上!!
        print(part.content)
        result = part.content
    # 5. 关闭提问的会话
    # chat -> 关闭 -》  session
   # use_chat.delete_sessions(ids=[session.id])# '21c0cd7a63b611f19d4f9218bd828f96'
    # 6. 返回结果
    return result

if __name__ == '__main__':
    #print(get_assistant_list())
    print(ask_question("空调维修指南助手", "空调漏水怎么修呢????"))

返回数据:(##4$$是引用的图片)

根据知识库中的内容,空调漏水的可能原因和修理方法如下:

1. **冷凝水管安装不当**  
   - 排水软管不得有瘪管或强扭现象,否则会导致排水不畅 ##0$$。  
   - 软管两端需用卡箍卡紧密封,禁止使用胶水 ##0$$。  
   - 冷凝水管坡度需满足设计要求(机组接管处≥1%,水平干管≥3‰),避免低坡积水 ##0$$。  
   - 汇流时禁止冷凝水相向对流,且支管需从主管上方接入 ##0$$。  

2. **过滤器堵塞**  
   - 过滤网积尘过多会堵塞出风,导致冷凝水积聚 ##4$$。需每两周清洁一次:拆下过滤网用清水冲洗(脏污时可用中性洗涤剂),彻底干燥后装回 ##2$$ ##4$$。  

3. **冷凝水系统漏气或堵塞**  
   - 排水管安装后需进行通水试验:向接水盘注水,确认排水顺畅 ##6$$。  
   - 满水试验:堵住末端排水口后注水,检查接口是否漏水 ##6$$。  
   - 排水管保温需无间隙且密封;埋墙管道需保温,接口需涂胶水粘贴 ##3$$。  

4. **室外机冷凝水排放问题**  
   - 热泵室外机挂墙安装时须设专用排水管,避免高空落水引发投诉 ##6$$。  

**修理步骤建议**  
1. 清洁过滤网 ##4$$;  
2. 检查排水软管是否扭曲或密封失效 ##0$$;  
3. 测量管道坡度是否达标 ##0$$;  
4. 对冷凝水管进行通水/满水试验排查泄漏或堵塞 ##6$$。