├── requirements.txt ├── RagSearch ├── docxRAGTest │ ├── 健康档案.docx │ ├── __pycache__ │ │ └── crew.cpython-311.pyc │ ├── config │ │ ├── agents.yaml │ │ └── tasks.yaml │ ├── crewTest.py │ ├── toolTest.py │ └── crew.py ├── pdfRAGTest │ ├── 健康档案.pdf │ ├── __pycache__ │ │ └── crew.cpython-311.pyc │ ├── config │ │ ├── agents.yaml │ │ └── tasks.yaml │ ├── crewTest.py │ ├── toolTest.py │ └── crew.py ├── csvRAGTest │ ├── __pycache__ │ │ └── crew.cpython-311.pyc │ ├── config │ │ ├── agents.yaml │ │ └── tasks.yaml │ ├── crewTest.py │ ├── toolTest.py │ ├── crew.py │ └── 健康档案.csv └── txtRAGTest │ ├── __pycache__ │ └── crew.cpython-311.pyc │ ├── config │ ├── agents.yaml │ └── tasks.yaml │ ├── crewTest.py │ ├── toolTest.py │ ├── crew.py │ └── 健康档案.txt ├── .env ├── LICENSE └── README.md /requirements.txt: -------------------------------------------------------------------------------- 1 | crewai==0.86.0 2 | python-dotenv==1.0.1 -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/健康档案.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NanGePlus/CrewAIToolsTest/HEAD/RagSearch/docxRAGTest/健康档案.docx -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/健康档案.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NanGePlus/CrewAIToolsTest/HEAD/RagSearch/pdfRAGTest/健康档案.pdf -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | OPENAI_BASE_URL=https://yunwu.ai/v1 2 | OPENAI_API_KEY=sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc 3 | OPENAI_CHAT_MODEL=gpt-4o-mini 4 | -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/__pycache__/crew.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NanGePlus/CrewAIToolsTest/HEAD/RagSearch/csvRAGTest/__pycache__/crew.cpython-311.pyc -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/__pycache__/crew.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NanGePlus/CrewAIToolsTest/HEAD/RagSearch/pdfRAGTest/__pycache__/crew.cpython-311.pyc -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/__pycache__/crew.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NanGePlus/CrewAIToolsTest/HEAD/RagSearch/txtRAGTest/__pycache__/crew.cpython-311.pyc -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/__pycache__/crew.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NanGePlus/CrewAIToolsTest/HEAD/RagSearch/docxRAGTest/__pycache__/crew.cpython-311.pyc -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/config/agents.yaml: -------------------------------------------------------------------------------- 1 | health_data_extractor: 2 | role: > 3 | 健康档案内容提取专家 4 | goal: > 5 | 根据用户提供的问题:{query},从提供的{csv_path}健康档案CSV文件中提取相关内容。 6 | backstory: > 7 | 你是一名擅长文档分析的健康数据专家,能够高效定位健康档案中的相关信息。 8 | 9 | health_advisor: 10 | role: > 11 | 健康建议生成专家 12 | goal: > 13 | 根据提取的内容,为用户生成清晰简洁的健康建议。 14 | backstory: > 15 | 你是一名经验丰富的健康顾问,擅长分析信息并提供实用的健康建议,帮助用户改善健康状况。 16 | -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/config/agents.yaml: -------------------------------------------------------------------------------- 1 | health_data_extractor: 2 | role: > 3 | 健康档案内容提取专家 4 | goal: > 5 | 根据用户提供的问题:{query},从提供的{pdf_path}健康档案PDF文件中提取相关内容。 6 | backstory: > 7 | 你是一名擅长文档分析的健康数据专家,能够高效定位健康档案中的相关信息。 8 | 9 | health_advisor: 10 | role: > 11 | 健康建议生成专家 12 | goal: > 13 | 根据提取的内容,为用户生成清晰简洁的健康建议。 14 | backstory: > 15 | 你是一名经验丰富的健康顾问,擅长分析信息并提供实用的健康建议,帮助用户改善健康状况。 16 | -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/config/agents.yaml: -------------------------------------------------------------------------------- 1 | health_data_extractor: 2 | role: > 3 | 健康档案内容提取专家 4 | goal: > 5 | 根据用户提供的问题:{query},从提供的{txt_path}健康档案TXT文件中提取相关内容。 6 | backstory: > 7 | 你是一名擅长文档分析的健康数据专家,能够高效定位健康档案中的相关信息。 8 | 9 | health_advisor: 10 | role: > 11 | 健康建议生成专家 12 | goal: > 13 | 根据提取的内容,为用户生成清晰简洁的健康建议。 14 | backstory: > 15 | 你是一名经验丰富的健康顾问,擅长分析信息并提供实用的健康建议,帮助用户改善健康状况。 16 | -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/config/agents.yaml: -------------------------------------------------------------------------------- 1 | health_data_extractor: 2 | role: > 3 | 健康档案内容提取专家 4 | goal: > 5 | 根据用户提供的问题:{query},从提供的{docx_path}健康档案DOCX文件中提取相关内容。 6 | backstory: > 7 | 你是一名擅长文档分析的健康数据专家,能够高效定位健康档案中的相关信息。 8 | 9 | health_advisor: 10 | role: > 11 | 健康建议生成专家 12 | goal: > 13 | 根据提取的内容,为用户生成清晰简洁的健康建议。 14 | backstory: > 15 | 你是一名经验丰富的健康顾问,擅长分析信息并提供实用的健康建议,帮助用户改善健康状况。 16 | -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/config/tasks.yaml: -------------------------------------------------------------------------------- 1 | extract_health_data_task: 2 | description: > 3 | 根据用户的问题:{query},从提供的{csv_path}健康档案CSV文件中检索相关信息。 4 | 健康档案可能包括病史、检查报告、医生记录等。 5 | expected_output: > 6 | 包含以下信息的报告: 7 | - 检索内容及其来源(行数、列数位置等) 8 | - 简要的上下文说明 9 | agent: health_data_extractor 10 | 11 | generate_health_advice_task: 12 | description: > 13 | 根据提取的健康数据,分析并生成健康建议。 14 | 健康建议应清晰、可操作,并针对用户的需求提供解决方案。 15 | expected_output: > 16 | 一段总结性健康建议,包括以下内容: 17 | - 数据的总结 18 | - 针对问题的健康建议 19 | - 如有必要,下一步行动的建议 20 | agent: health_advisor -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/config/tasks.yaml: -------------------------------------------------------------------------------- 1 | extract_health_data_task: 2 | description: > 3 | 根据用户的问题:{query},从提供的{pdf_path}健康档案PDF文件中检索相关信息。 4 | 健康档案可能包括病史、检查报告、医生记录等。 5 | expected_output: > 6 | 包含以下信息的报告: 7 | - 检索内容及其来源(页码、段落位置等) 8 | - 简要的上下文说明 9 | agent: health_data_extractor 10 | 11 | generate_health_advice_task: 12 | description: > 13 | 根据提取的健康数据,分析并生成健康建议。 14 | 健康建议应清晰、可操作,并针对用户的需求提供解决方案。 15 | expected_output: > 16 | 一段总结性健康建议,包括以下内容: 17 | - 数据的总结 18 | - 针对问题的健康建议 19 | - 如有必要,下一步行动的建议 20 | agent: health_advisor -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/config/tasks.yaml: -------------------------------------------------------------------------------- 1 | extract_health_data_task: 2 | description: > 3 | 根据用户的问题:{query},从提供的{txt_path}健康档案TXT文件中检索相关信息。 4 | 健康档案可能包括病史、检查报告、医生记录等。 5 | expected_output: > 6 | 包含以下信息的报告: 7 | - 检索内容及其来源(页码、段落位置等) 8 | - 简要的上下文说明 9 | agent: health_data_extractor 10 | 11 | generate_health_advice_task: 12 | description: > 13 | 根据提取的健康数据,分析并生成健康建议。 14 | 健康建议应清晰、可操作,并针对用户的需求提供解决方案。 15 | expected_output: > 16 | 一段总结性健康建议,包括以下内容: 17 | - 数据的总结 18 | - 针对问题的健康建议 19 | - 如有必要,下一步行动的建议 20 | agent: health_advisor -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/config/tasks.yaml: -------------------------------------------------------------------------------- 1 | extract_health_data_task: 2 | description: > 3 | 根据用户的问题:{query},从提供的{docx_path}健康档案DOCX文件中检索相关信息。 4 | 健康档案可能包括病史、检查报告、医生记录等。 5 | expected_output: > 6 | 包含以下信息的报告: 7 | - 检索内容及其来源(页码、段落位置等) 8 | - 简要的上下文说明 9 | agent: health_data_extractor 10 | 11 | generate_health_advice_task: 12 | description: > 13 | 根据提取的健康数据,分析并生成健康建议。 14 | 健康建议应清晰、可操作,并针对用户的需求提供解决方案。 15 | expected_output: > 16 | 一段总结性健康建议,包括以下内容: 17 | - 数据的总结 18 | - 针对问题的健康建议 19 | - 如有必要,下一步行动的建议 20 | agent: health_advisor -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/crewTest.py: -------------------------------------------------------------------------------- 1 | import os 2 | from dotenv import load_dotenv 3 | from crewai import LLM as ChatOpenAI 4 | from crew import CrewtestprojectCrew 5 | 6 | 7 | 8 | 9 | # 从 .env 文件加载环境变量 10 | load_dotenv() 11 | 12 | 13 | def runCrew(query, pdf_path, llm): 14 | inputs = { 15 | "query": query, 16 | "pdf_path": pdf_path, 17 | } 18 | # 传入llm,指定crew中的Agent使用什么大模型 19 | result = CrewtestprojectCrew(llm).crew().kickoff(inputs=inputs) 20 | # 将返回的数据转成string类型 21 | formatted_response = str(result) 22 | print(f"LLM最终回复结果: {formatted_response}") 23 | 24 | 25 | if __name__ == '__main__': 26 | llm = ChatOpenAI( 27 | base_url=os.getenv("OPENAI_BASE_URL"), 28 | api_key=os.getenv("OPENAI_API_KEY"), 29 | model=os.getenv("OPENAI_CHAT_MODEL") 30 | ) 31 | query = "张三九的健康档案信息及建议" 32 | pdf_path = "健康档案.pdf" 33 | runCrew(query, pdf_path, llm) 34 | -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/crewTest.py: -------------------------------------------------------------------------------- 1 | import os 2 | from dotenv import load_dotenv 3 | from crewai import LLM as ChatOpenAI 4 | from crew import CrewtestprojectCrew 5 | 6 | 7 | 8 | 9 | # 从 .env 文件加载环境变量 10 | load_dotenv() 11 | 12 | 13 | def runCrew(query, docx_path, llm): 14 | inputs = { 15 | "query": query, 16 | "docx_path": docx_path, 17 | } 18 | # 传入llm,指定crew中的Agent使用什么大模型 19 | result = CrewtestprojectCrew(llm).crew().kickoff(inputs=inputs) 20 | # 将返回的数据转成string类型 21 | formatted_response = str(result) 22 | print(f"LLM最终回复结果: {formatted_response}") 23 | 24 | 25 | if __name__ == '__main__': 26 | llm = ChatOpenAI( 27 | base_url=os.getenv("OPENAI_BASE_URL"), 28 | api_key=os.getenv("OPENAI_API_KEY"), 29 | model=os.getenv("OPENAI_CHAT_MODEL") 30 | ) 31 | query = "张三九的健康档案信息及建议" 32 | docx_path = "健康档案.docx" 33 | runCrew(query, docx_path, llm) 34 | -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/toolTest.py: -------------------------------------------------------------------------------- 1 | from crewai_tools import PDFSearchTool 2 | 3 | 4 | 5 | # 自定义大模型配置 6 | tool = PDFSearchTool( 7 | config=dict( 8 | llm=dict( 9 | provider="openai", 10 | config=dict( 11 | base_url="https://yunwu.ai/v1", 12 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 13 | model="gpt-4o-mini" 14 | ), 15 | ), 16 | embedder=dict( 17 | provider="openai", 18 | config=dict( 19 | api_base="https://yunwu.ai/v1", 20 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 21 | model="text-embedding-3-small" 22 | ), 23 | ), 24 | ) 25 | ) 26 | 27 | 28 | # 运行工具,调用工具解析文件并检索内容 29 | result = tool.run( 30 | pdf='健康档案.pdf', 31 | query="张三九的基本信息" 32 | ) 33 | print("result:",result) 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/crewTest.py: -------------------------------------------------------------------------------- 1 | import os 2 | from dotenv import load_dotenv 3 | from crewai import LLM as ChatOpenAI 4 | from crew import CrewtestprojectCrew 5 | 6 | 7 | 8 | 9 | # 从 .env 文件加载环境变量 10 | load_dotenv() 11 | 12 | 13 | def runCrew(query, csv_path, llm): 14 | inputs = { 15 | "query": query, 16 | "csv_path": csv_path, 17 | } 18 | # 传入llm,指定crew中的Agent使用什么大模型 19 | result = CrewtestprojectCrew(llm).crew().kickoff(inputs=inputs) 20 | # 将返回的数据转成string类型 21 | formatted_response = str(result) 22 | print(f"LLM最终回复结果: {formatted_response}") 23 | 24 | 25 | if __name__ == '__main__': 26 | llm = ChatOpenAI( 27 | base_url=os.getenv("OPENAI_BASE_URL"), 28 | api_key=os.getenv("OPENAI_API_KEY"), 29 | model=os.getenv("OPENAI_CHAT_MODEL") 30 | ) 31 | query = "张三九的健康档案信息及建议" 32 | csv_path = "健康档案.csv" 33 | runCrew(query, csv_path, llm) 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/toolTest.py: -------------------------------------------------------------------------------- 1 | from crewai_tools import CSVSearchTool 2 | 3 | 4 | 5 | # 自定义大模型配置 6 | tool = CSVSearchTool( 7 | config=dict( 8 | llm=dict( 9 | provider="openai", 10 | config=dict( 11 | base_url="https://yunwu.ai/v1", 12 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 13 | model="gpt-4o-mini" 14 | ), 15 | ), 16 | embedder=dict( 17 | provider="openai", 18 | config=dict( 19 | api_base="https://yunwu.ai/v1", 20 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 21 | model="text-embedding-3-small" 22 | ), 23 | ), 24 | ) 25 | ) 26 | 27 | 28 | # 运行工具,调用工具解析文件并检索内容 29 | result = tool.run( 30 | csv='健康档案.csv', 31 | search_query="张三九的基本信息" 32 | ) 33 | print("result:",result) 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/crewTest.py: -------------------------------------------------------------------------------- 1 | import os 2 | from dotenv import load_dotenv 3 | from crewai import LLM as ChatOpenAI 4 | from crew import CrewtestprojectCrew 5 | 6 | 7 | 8 | 9 | # 从 .env 文件加载环境变量 10 | load_dotenv() 11 | 12 | 13 | def runCrew(query, txt_path, llm): 14 | inputs = { 15 | "query": query, 16 | "txt_path": txt_path, 17 | } 18 | # 传入llm,指定crew中的Agent使用什么大模型 19 | result = CrewtestprojectCrew(llm).crew().kickoff(inputs=inputs) 20 | # 将返回的数据转成string类型 21 | formatted_response = str(result) 22 | print(f"LLM最终回复结果: {formatted_response}") 23 | 24 | 25 | if __name__ == '__main__': 26 | llm = ChatOpenAI( 27 | base_url=os.getenv("OPENAI_BASE_URL"), 28 | api_key=os.getenv("OPENAI_API_KEY"), 29 | model=os.getenv("OPENAI_CHAT_MODEL") 30 | ) 31 | query = "张三九的健康档案信息及建议" 32 | txt_path = "健康档案.txt" 33 | runCrew(query, txt_path, llm) 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/toolTest.py: -------------------------------------------------------------------------------- 1 | from crewai_tools import TXTSearchTool 2 | 3 | 4 | 5 | # 自定义大模型配置 6 | tool = TXTSearchTool( 7 | config=dict( 8 | llm=dict( 9 | provider="openai", 10 | config=dict( 11 | base_url="https://yunwu.ai/v1", 12 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 13 | model="gpt-4o-mini" 14 | ), 15 | ), 16 | embedder=dict( 17 | provider="openai", 18 | config=dict( 19 | api_base="https://yunwu.ai/v1", 20 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 21 | model="text-embedding-3-small" 22 | ), 23 | ), 24 | ) 25 | ) 26 | 27 | 28 | # 运行工具,调用工具解析文件并检索内容 29 | result = tool.run( 30 | txt='健康档案.txt', 31 | search_query="张三九的基本信息" 32 | ) 33 | print("result:",result) 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/toolTest.py: -------------------------------------------------------------------------------- 1 | from crewai_tools import DOCXSearchTool 2 | 3 | 4 | 5 | # 自定义大模型配置 6 | tool = DOCXSearchTool( 7 | config=dict( 8 | llm=dict( 9 | provider="openai", 10 | config=dict( 11 | base_url="https://yunwu.ai/v1", 12 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 13 | model="gpt-4o-mini" 14 | ), 15 | ), 16 | embedder=dict( 17 | provider="openai", 18 | config=dict( 19 | api_base="https://yunwu.ai/v1", 20 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 21 | model="text-embedding-3-small" 22 | ), 23 | ), 24 | ) 25 | ) 26 | 27 | 28 | # 运行工具,调用工具解析文件并检索内容 29 | result = tool.run( 30 | docx='健康档案.docx', 31 | search_query="张三九的基本信息" 32 | ) 33 | print("result:",result) 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 NanGePlus 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/crew.py: -------------------------------------------------------------------------------- 1 | # 核心功能:在CrewAI中定义Agent和Task,并通过Crew来管理这些Agent和Task的执行流程 2 | # 导入相关的依赖包 3 | from crewai import Agent, Crew, Process, Task 4 | # CrewBase是一个装饰器,标记一个类为CrewAI项目。agent、task和crew装饰器用于定义agent、task和crew 5 | from crewai.project import CrewBase, agent, crew, task 6 | # 导入官方提供的工具包 7 | from crewai_tools import CSVSearchTool 8 | 9 | 10 | 11 | 12 | # 初始化工具 自定义大模型 13 | csv_tool = CSVSearchTool( 14 | config=dict( 15 | llm=dict( 16 | provider="openai", 17 | config=dict( 18 | base_url="https://yunwu.ai/v1", 19 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 20 | model="gpt-4o-mini" 21 | ), 22 | ), 23 | embedder=dict( 24 | provider="openai", 25 | config=dict( 26 | api_base="https://yunwu.ai/v1", 27 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 28 | model="text-embedding-3-small" 29 | ), 30 | ), 31 | ) 32 | ) 33 | 34 | 35 | # 定义了一个CrewtestprojectCrew类并应用了@CrewBase装饰器初始化项目 36 | # 这个类代表一个完整的CrewAI项目 37 | @CrewBase 38 | class CrewtestprojectCrew(): 39 | # agents_config和tasks_config分别指向agent和task的配置文件,存放在config目录下 40 | agents_config = 'config/agents.yaml' 41 | tasks_config = 'config/tasks.yaml' 42 | 43 | def __init__(self, llm): 44 | # Agent使用的大模型 45 | self.llm = llm 46 | 47 | # 通过@agent装饰器定义一个函数researcher,返回一个Agent实例 48 | # 该代理读取agents_config中的researcher配置 49 | # 参数verbose=True用于输出调试信息 50 | # tools=[MyCustomTool()] 表示代理可以加载自定义工具,但此处为注释,需根据需求自行加载。 51 | @agent 52 | def health_data_extractor(self) -> Agent: 53 | return Agent( 54 | config=self.agents_config['health_data_extractor'], 55 | verbose=True, 56 | llm=self.llm, 57 | tools=[csv_tool] 58 | ) 59 | 60 | @agent 61 | def health_advisor(self) -> Agent: 62 | return Agent( 63 | config=self.agents_config['health_advisor'], 64 | verbose=True, 65 | llm=self.llm 66 | ) 67 | 68 | # 通过@task装饰器定义research_task,返回一个Task实例 69 | # 配置文件为tasks.yaml中的research_task部分 70 | @task 71 | def extract_health_data_task(self) -> Task: 72 | return Task( 73 | config=self.tasks_config['extract_health_data_task'], 74 | tools=[csv_tool] 75 | ) 76 | 77 | @task 78 | def generate_health_advice_task(self) -> Task: 79 | return Task( 80 | config=self.tasks_config['generate_health_advice_task'], 81 | ) 82 | 83 | 84 | 85 | # Crew类将agent和task组合成一个执行队列,并根据指定的执行流程进行任务调度 86 | # 通过@crew装饰器定义crew,创建一个Crew实例 87 | # agents=self.agents和tasks=self.tasks分别自动获取@agent和@task装饰器生成的agent和task 88 | # process=Process.sequential指定agent执行顺序为顺序执行模式 89 | # process=Process.hierarchical指定agent执行顺序为层次化执行 90 | @crew 91 | def crew(self) -> Crew: 92 | return Crew( 93 | agents=self.agents, 94 | tasks=self.tasks, 95 | process=Process.sequential, 96 | verbose=True 97 | ) 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /RagSearch/pdfRAGTest/crew.py: -------------------------------------------------------------------------------- 1 | # 核心功能:在CrewAI中定义Agent和Task,并通过Crew来管理这些Agent和Task的执行流程 2 | # 导入相关的依赖包 3 | from crewai import Agent, Crew, Process, Task 4 | # CrewBase是一个装饰器,标记一个类为CrewAI项目。agent、task和crew装饰器用于定义agent、task和crew 5 | from crewai.project import CrewBase, agent, crew, task 6 | # 导入官方提供的工具包 7 | from crewai_tools import PDFSearchTool 8 | 9 | 10 | 11 | 12 | # 初始化工具 自定义大模型 13 | pdf_tool = PDFSearchTool( 14 | config=dict( 15 | llm=dict( 16 | provider="openai", 17 | config=dict( 18 | base_url="https://yunwu.ai/v1", 19 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 20 | model="gpt-4o-mini" 21 | ), 22 | ), 23 | embedder=dict( 24 | provider="openai", 25 | config=dict( 26 | api_base="https://yunwu.ai/v1", 27 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 28 | model="text-embedding-3-small" 29 | ), 30 | ), 31 | ) 32 | ) 33 | 34 | 35 | # 定义了一个CrewtestprojectCrew类并应用了@CrewBase装饰器初始化项目 36 | # 这个类代表一个完整的CrewAI项目 37 | @CrewBase 38 | class CrewtestprojectCrew(): 39 | # agents_config和tasks_config分别指向agent和task的配置文件,存放在config目录下 40 | agents_config = 'config/agents.yaml' 41 | tasks_config = 'config/tasks.yaml' 42 | 43 | def __init__(self, llm): 44 | # Agent使用的大模型 45 | self.llm = llm 46 | 47 | # 通过@agent装饰器定义一个函数researcher,返回一个Agent实例 48 | # 该代理读取agents_config中的researcher配置 49 | # 参数verbose=True用于输出调试信息 50 | # tools=[MyCustomTool()] 表示代理可以加载自定义工具,但此处为注释,需根据需求自行加载。 51 | @agent 52 | def health_data_extractor(self) -> Agent: 53 | return Agent( 54 | config=self.agents_config['health_data_extractor'], 55 | verbose=True, 56 | llm=self.llm, 57 | tools=[pdf_tool] 58 | ) 59 | 60 | @agent 61 | def health_advisor(self) -> Agent: 62 | return Agent( 63 | config=self.agents_config['health_advisor'], 64 | verbose=True, 65 | llm=self.llm 66 | ) 67 | 68 | # 通过@task装饰器定义research_task,返回一个Task实例 69 | # 配置文件为tasks.yaml中的research_task部分 70 | @task 71 | def extract_health_data_task(self) -> Task: 72 | return Task( 73 | config=self.tasks_config['extract_health_data_task'], 74 | tools=[pdf_tool] 75 | ) 76 | 77 | @task 78 | def generate_health_advice_task(self) -> Task: 79 | return Task( 80 | config=self.tasks_config['generate_health_advice_task'], 81 | ) 82 | 83 | 84 | 85 | # Crew类将agent和task组合成一个执行队列,并根据指定的执行流程进行任务调度 86 | # 通过@crew装饰器定义crew,创建一个Crew实例 87 | # agents=self.agents和tasks=self.tasks分别自动获取@agent和@task装饰器生成的agent和task 88 | # process=Process.sequential指定agent执行顺序为顺序执行模式 89 | # process=Process.hierarchical指定agent执行顺序为层次化执行 90 | @crew 91 | def crew(self) -> Crew: 92 | return Crew( 93 | agents=self.agents, 94 | tasks=self.tasks, 95 | process=Process.sequential, 96 | verbose=True 97 | ) 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/crew.py: -------------------------------------------------------------------------------- 1 | # 核心功能:在CrewAI中定义Agent和Task,并通过Crew来管理这些Agent和Task的执行流程 2 | # 导入相关的依赖包 3 | from crewai import Agent, Crew, Process, Task 4 | # CrewBase是一个装饰器,标记一个类为CrewAI项目。agent、task和crew装饰器用于定义agent、task和crew 5 | from crewai.project import CrewBase, agent, crew, task 6 | # 导入官方提供的工具包 7 | from crewai_tools import TXTSearchTool 8 | 9 | 10 | 11 | 12 | # 初始化工具 自定义大模型 13 | txt_tool = TXTSearchTool( 14 | config=dict( 15 | llm=dict( 16 | provider="openai", 17 | config=dict( 18 | base_url="https://yunwu.ai/v1", 19 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 20 | model="gpt-4o-mini" 21 | ), 22 | ), 23 | embedder=dict( 24 | provider="openai", 25 | config=dict( 26 | api_base="https://yunwu.ai/v1", 27 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 28 | model="text-embedding-3-small" 29 | ), 30 | ), 31 | ) 32 | ) 33 | 34 | 35 | # 定义了一个CrewtestprojectCrew类并应用了@CrewBase装饰器初始化项目 36 | # 这个类代表一个完整的CrewAI项目 37 | @CrewBase 38 | class CrewtestprojectCrew(): 39 | # agents_config和tasks_config分别指向agent和task的配置文件,存放在config目录下 40 | agents_config = 'config/agents.yaml' 41 | tasks_config = 'config/tasks.yaml' 42 | 43 | def __init__(self, llm): 44 | # Agent使用的大模型 45 | self.llm = llm 46 | 47 | # 通过@agent装饰器定义一个函数researcher,返回一个Agent实例 48 | # 该代理读取agents_config中的researcher配置 49 | # 参数verbose=True用于输出调试信息 50 | # tools=[MyCustomTool()] 表示代理可以加载自定义工具,但此处为注释,需根据需求自行加载。 51 | @agent 52 | def health_data_extractor(self) -> Agent: 53 | return Agent( 54 | config=self.agents_config['health_data_extractor'], 55 | verbose=True, 56 | llm=self.llm, 57 | tools=[txt_tool] 58 | ) 59 | 60 | @agent 61 | def health_advisor(self) -> Agent: 62 | return Agent( 63 | config=self.agents_config['health_advisor'], 64 | verbose=True, 65 | llm=self.llm 66 | ) 67 | 68 | # 通过@task装饰器定义research_task,返回一个Task实例 69 | # 配置文件为tasks.yaml中的research_task部分 70 | @task 71 | def extract_health_data_task(self) -> Task: 72 | return Task( 73 | config=self.tasks_config['extract_health_data_task'], 74 | tools=[txt_tool] 75 | ) 76 | 77 | @task 78 | def generate_health_advice_task(self) -> Task: 79 | return Task( 80 | config=self.tasks_config['generate_health_advice_task'], 81 | ) 82 | 83 | 84 | 85 | # Crew类将agent和task组合成一个执行队列,并根据指定的执行流程进行任务调度 86 | # 通过@crew装饰器定义crew,创建一个Crew实例 87 | # agents=self.agents和tasks=self.tasks分别自动获取@agent和@task装饰器生成的agent和task 88 | # process=Process.sequential指定agent执行顺序为顺序执行模式 89 | # process=Process.hierarchical指定agent执行顺序为层次化执行 90 | @crew 91 | def crew(self) -> Crew: 92 | return Crew( 93 | agents=self.agents, 94 | tasks=self.tasks, 95 | process=Process.sequential, 96 | verbose=True 97 | ) 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /RagSearch/docxRAGTest/crew.py: -------------------------------------------------------------------------------- 1 | # 核心功能:在CrewAI中定义Agent和Task,并通过Crew来管理这些Agent和Task的执行流程 2 | # 导入相关的依赖包 3 | from crewai import Agent, Crew, Process, Task 4 | # CrewBase是一个装饰器,标记一个类为CrewAI项目。agent、task和crew装饰器用于定义agent、task和crew 5 | from crewai.project import CrewBase, agent, crew, task 6 | # 导入官方提供的工具包 7 | from crewai_tools import DOCXSearchTool 8 | 9 | 10 | 11 | 12 | # 初始化工具 自定义大模型 13 | docx_tool = DOCXSearchTool( 14 | config=dict( 15 | llm=dict( 16 | provider="openai", 17 | config=dict( 18 | base_url="https://yunwu.ai/v1", 19 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 20 | model="gpt-4o-mini" 21 | ), 22 | ), 23 | embedder=dict( 24 | provider="openai", 25 | config=dict( 26 | api_base="https://yunwu.ai/v1", 27 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 28 | model="text-embedding-3-small" 29 | ), 30 | ), 31 | ) 32 | ) 33 | 34 | 35 | # 定义了一个CrewtestprojectCrew类并应用了@CrewBase装饰器初始化项目 36 | # 这个类代表一个完整的CrewAI项目 37 | @CrewBase 38 | class CrewtestprojectCrew(): 39 | # agents_config和tasks_config分别指向agent和task的配置文件,存放在config目录下 40 | agents_config = 'config/agents.yaml' 41 | tasks_config = 'config/tasks.yaml' 42 | 43 | def __init__(self, llm): 44 | # Agent使用的大模型 45 | self.llm = llm 46 | 47 | # 通过@agent装饰器定义一个函数researcher,返回一个Agent实例 48 | # 该代理读取agents_config中的researcher配置 49 | # 参数verbose=True用于输出调试信息 50 | # tools=[MyCustomTool()] 表示代理可以加载自定义工具,但此处为注释,需根据需求自行加载。 51 | @agent 52 | def health_data_extractor(self) -> Agent: 53 | return Agent( 54 | config=self.agents_config['health_data_extractor'], 55 | verbose=True, 56 | llm=self.llm, 57 | tools=[docx_tool] 58 | ) 59 | 60 | @agent 61 | def health_advisor(self) -> Agent: 62 | return Agent( 63 | config=self.agents_config['health_advisor'], 64 | verbose=True, 65 | llm=self.llm 66 | ) 67 | 68 | # 通过@task装饰器定义research_task,返回一个Task实例 69 | # 配置文件为tasks.yaml中的research_task部分 70 | @task 71 | def extract_health_data_task(self) -> Task: 72 | return Task( 73 | config=self.tasks_config['extract_health_data_task'], 74 | tools=[docx_tool] 75 | ) 76 | 77 | @task 78 | def generate_health_advice_task(self) -> Task: 79 | return Task( 80 | config=self.tasks_config['generate_health_advice_task'], 81 | ) 82 | 83 | 84 | 85 | # Crew类将agent和task组合成一个执行队列,并根据指定的执行流程进行任务调度 86 | # 通过@crew装饰器定义crew,创建一个Crew实例 87 | # agents=self.agents和tasks=self.tasks分别自动获取@agent和@task装饰器生成的agent和task 88 | # process=Process.sequential指定agent执行顺序为顺序执行模式 89 | # process=Process.hierarchical指定agent执行顺序为层次化执行 90 | @crew 91 | def crew(self) -> Crew: 92 | return Crew( 93 | agents=self.agents, 94 | tasks=self.tasks, 95 | process=Process.sequential, 96 | verbose=True 97 | ) 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /RagSearch/csvRAGTest/健康档案.csv: -------------------------------------------------------------------------------- 1 | 姓名,基本信息,医疗历史,生活方式和习惯,体检与化验结果,健康风险评估,医生建议,长期目标 2 | 张三九,"张三九,男,出生于 1985 年 5 月 20 日,目前 39 岁,已婚,职业为 IT 工程师。张三九的 3 | 血型为 O 型,联系电话为 138-1234-5678,电子邮箱为 zhangsan@example.com,居住在 4 | 上海市浦东新区张江路 123 号。其紧急联系人为妻子李四六,联系电话为 138-8765-4321","张三九在 2005 年被确诊为高血压,自此开始接受降压药物治疗。2010 年,他被确诊为二 5 | 型糖尿病,并开始使用口服降糖药进行管理。2017 年,张三九被诊断为脂肪肝,医生建议 6 | 通过饮食调整和增加运动来改善这一状况。2022 年,他因腰椎间盘突出接受了微创手术, 7 | 术后恢复良好。此外,张三九对青霉素有过敏反应,曾出现皮疹和呼吸困难。海鲜会导致轻 8 | 度皮肤发痒,表明他对海鲜也有一定的过敏反应。张三九的家族病史显示,父亲患有高血压 9 | 和二型糖尿病,母亲则有甲状腺疾病史。","张三九的饮食习惯偏向高脂肪和高糖食品,日常饮食中蔬菜和水果的摄入较少,盐分摄入偏 10 | 高。他的工作繁忙,运动较少,每周仅进行一次轻度运动,如散步。张三九无吸烟史,但每 11 | 周饮酒 2 至 3 次,每次约 300 毫升啤酒。他的平均睡眠时间为每晚 6 小时,常常感到疲惫。 ","张三九最近一次体检是在 2024 年 8 月 15 日,体检结果显示他的身高为 175 厘米,体重为 12 | 78 公斤,体重指数(BMI)为 25.5,表明体重超重。他的腰围为 92 厘米,略高于健康范围。 13 | 血压测量结果为 135/85 毫米汞柱,属于轻度高血压范围。心率为每分钟 78 次,处于正常 14 | 范围。 15 | 在实验室检查中,张三九的空腹血糖为 6.8 毫摩尔/升,略高于正常范围;餐后 2 小时血糖 16 | 为 8.9 毫摩尔/升,也高于正常标准。血脂检查结果显示,总胆固醇为 5.2 毫摩尔/升,处于 17 | 正常范围,甘油三酯为 1.8 毫摩尔/升,略高于正常,低密度脂蛋白(LDL)为 3.4 毫摩尔/ 18 | 升,略高。肝功能检查显示,谷丙转氨酶(ALT)和谷草转氨酶(AST)的水平正常,分别 19 | 为 28 和 25 单位/升。肾功能检查显示,肌酐、尿素和尿酸水平均处于正常范围内。 20 | 其他检查结果中,心电图显示张三九的心脏功能正常,未发现异常心律。胸片检查结果显示 21 | 其肺部和胸腔无异常,腹部超声检查显示脂肪肝轻度增加,但未发现其他异常。","根据张三九的健康档案及最新体检结果,存在以下健康风险: 22 | 1. 心血管疾病风险: 由于血压偏高和血脂异常,张三九存在较高的心血管疾病风险。建议进一步控制血压和血脂水平。 23 | 2. 糖尿病管理不足: 张三九的血糖控制不理想,存在糖尿病并发症的潜在风险。需要进一 24 | 步优化糖尿病管理方案。 25 | 3. 肥胖相关问题: 张三九的体重指数略高,腰围也超过健康范围,提示存在代谢综合征的 26 | 风险。","1. 饮食控制: 建议张三九减少高糖、高脂肪食物的摄入,增加蔬菜和水果的摄入量,控制 27 | 盐分摄入,减少加工食品的使用。 28 | 2. 增加运动量: 张三九每周应至少进行三次中等强度的有氧运动,如快走或跑步,每次至 29 | 少 30 分钟。 30 | 3. 药物管理: 建议张三九继续遵医嘱服用降压药和降糖药,定期监测血压和血糖水平。 31 | 4. 定期随访: 每三个月进行一次血压、血糖和血脂的随访监测,并每年进行一次全面体检, 32 | 以动态评估健康状况。 33 | 5. 生活方式调整: 张三九需要改善睡眠质量,减少压力,尝试冥想或其他放松技巧,以提 34 | 升整体生活质量。 ","1. 体重管理: 将体重指数控制在 24 以内,减少腹部脂肪堆积。 35 | 2. 血糖管理: 将空腹血糖控制在 6.0 毫摩尔/升以下,餐后 2 小时血糖控制在 7.8 毫摩尔/升 36 | 以下。 37 | 3. 血压管理: 将血压控制在 120/80 毫米汞柱以下,以降低心血管疾病风险。 38 | 4. 改善生活质量: 通过增加运动频率和强度、改善睡眠质量、减轻工作压力等措施,提升 39 | 生活质量。 " 40 | 李四六,"患者姓名为李四六,女性,出生于 1990 年 3 月 15 日,目前 34 岁,已婚,职业为小学教师。 41 | 李四六的血型为 A 型,她的联系电话为 139-9876-5432,电子邮箱为 lisi@example.com, 42 | 居住地址为北京市海淀区中关村大街 456 号。紧急联系人为她的丈夫王五,联系电话为 43 | 139-1234-5678。 ","李四六的医疗历史包括以下内容: 44 | 既往病史: 45 | 2015 年: 李四六因甲状腺功能亢进接受了抗甲状腺药物治疗,病情稳定后目前已经停止 46 | 用药。2018 年: 李四六在怀孕期间被诊断为妊娠糖尿病,产后血糖水平恢复正常,但仍需定期 47 | 监测血糖。 48 | 2020 年: 李四六在一次例行体检中发现胆固醇偏高,医生建议她通过饮食控制和增加运 49 | 动来管理胆固醇水平。 50 | 手术史: 51 | 李四六无重大手术史。 52 | 过敏史: 53 | 药物过敏: 李四六对阿司匹林过敏,曾出现皮疹和轻度呼吸困难。 54 | 食物过敏: 李四六对坚果过敏,食用后会导致口腔肿胀和皮肤发痒。 55 | 家族病史: 56 | 父亲: 高血压和冠心病。 57 | 母亲: 无重大疾病史。","李四六的生活方式健康,饮食习惯以清淡为主,平时注重均衡摄入蔬菜、水果和蛋白质,少 58 | 食高脂肪和高糖食物。李四六保持每周三次的有氧运动,如跑步和瑜伽,每次约 45 分钟。 59 | 她没有吸烟史,也很少饮酒,仅在社交场合偶尔饮用少量红酒。李四六的睡眠质量较好,每 60 | 晚平均睡眠时间为 7 至 8 小时。","李四六最近一次体检是在 2024 年 7 月 20 日,结果显示她的身高为 162 厘米,体重为 58 61 | 公斤,体重指数(BMI)为 22.1,处于正常范围内。她的血压为 120/75 毫米汞柱,属于正 62 | 常范围,心率为每分钟 70 次,显示心脏功能正常。 63 | 在实验室检查中,李四六的空腹血糖为 5.2 毫摩尔/升,正常。血脂检查显示,总胆固醇为 64 | 5.8 毫摩尔/升,略高于正常范围,低密度脂蛋白(LDL)为 3.2 毫摩尔/升,略高于正常水平。 65 | 肝功能检查显示,谷丙转氨酶(ALT)为 18 单位/升,谷草转氨酶(AST)为 20 单位/升, 66 | 均处于正常范围。肾功能检查结果显示,肌酐、尿素和尿酸水平均在正常范围内。 67 | 此外,李四六的心电图结果显示心律正常,未发现异常。腹部超声检查未见肝脏或胆囊的明 68 | 显异常,肾脏形态正常。","根据李四六的健康档案和最近的体检结果,存在以下健康风险: 69 | 1. 心血管疾病风险: 李四六的胆固醇水平偏高,尤其是低密度脂蛋白(LDL),这增加了她 70 | 患心血管疾病的风险。建议继续通过饮食和运动管理胆固醇水平。 71 | 2. 潜在糖尿病风险: 虽然李四六目前血糖水平正常,但考虑到她曾有妊娠糖尿病史,未来可能存在糖尿病风险,建议定期监测血糖。 ","1. 胆固醇管理: 建议李四六进一步减少饮食中饱和脂肪和反式脂肪的摄入,增加富含纤维 72 | 的食物,如全谷物、蔬菜和水果,并继续保持定期运动习惯,以帮助降低胆固醇水平。 73 | 2. 糖尿病预防: 建议李四六定期进行空腹血糖和糖化血红蛋白(HbA1c)检查,尤其是在 74 | 体重增加或生活方式改变时,以便及早发现潜在的糖尿病问题。 75 | 3. 保持健康生活方式: 李四六应继续维持健康的饮食和运动习惯,并确保充足的睡眠和减 76 | 轻压力,以保持整体健康。","1. 保持正常体重: 李四六目前的体重指数在健康范围内,目标是保持这一体重,避免肥胖 77 | 相关健康问题。 78 | 2. 管理血脂水平: 将总胆固醇和低密度脂蛋白(LDL)水平控制在正常范围内,以降低心血 79 | 管疾病风险。 80 | 3. 预防糖尿病: 通过健康的饮食和生活方式,避免未来糖尿病的发生。 " 81 | 王五,"患者姓名为王五,男性,出生于 1978 年 12 月 2 日,目前 45 岁,已婚,职业为银行经理。 82 | 王五的血型为 B 型,他的联系电话为 136-1234-8765,电子邮箱为 wangwu@example.com, 83 | 居住地址为广州市天河区体育东路 789 号。紧急联系人为其妻子赵六,联系电话为 84 | 136-8765-1234。","王五的医疗历史包括以下内容: 85 | 既往病史: 86 | 2008 年: 王五因高血压开始服用降压药,至今一直在用药,血压控制良好。 87 | 2012 年: 被诊断为胃溃疡,接受了抗溃疡治疗,病情得到控制,目前通过饮食调理保持 88 | 胃部健康。 89 | 2016 年: 由于腰椎间盘突出,接受了保守治疗,症状缓解,目前通过定期锻炼和理疗维 90 | 持腰部健康。 91 | 手术史: 92 | 2010 年: 王五因阑尾炎接受了阑尾切除手术,术后恢复良好,无并发症。 93 | 过敏史:药物过敏: 王五对头孢类抗生素有过敏反应,曾出现皮疹和轻度发热。 94 | 食物过敏: 无明显食物过敏史。 95 | 家族病史: 96 | 父亲: 高血压和冠心病。 97 | 母亲: 2 型糖尿病。","王五的生活方式中规中矩,平日饮食以家常菜为主,偶尔外出聚餐时会进食较多的肉类和海 98 | 鲜。他的饮食中包含适量的蔬菜和水果,但也存在较高的盐分摄入。王五每周至少进行两次 99 | 高尔夫运动,每次约 1 小时,并会在周末进行长时间的步行。他无吸烟史,但偶尔饮酒, 100 | 每周不超过两次,每次约 500 毫升啤酒。他的平均睡眠时间为 6 至 7 小时,睡眠质量一般。","王五最近一次体检是在 2024 年 8 月 5 日,结果显示他的身高为 180 厘米,体重为 85 公斤, 101 | 体重指数(BMI)为 26.2,表明其体重略超标。他的血压为 130/80 毫米汞柱,虽然控制在 102 | 正常范围,但接近高限,心率为每分钟 75 次,显示心脏功能正常。 103 | 在实验室检查中,王五的空腹血糖为 5.5 毫摩尔/升,正常范围内。血脂检查显示,总胆固 104 | 醇为 6.0 毫摩尔/升,略高,低密度脂蛋白(LDL)为 3.5 毫摩尔/升,高密度脂蛋白(HDL) 105 | 为 1.2 毫摩尔/升,甘油三酯为 1.9 毫摩尔/升,均略高。肝功能检查结果显示,谷丙转氨酶 106 | (ALT)为 35 单位/升,谷草转氨酶(AST)为 30 单位/升,处于正常范围。肾功能检查显 107 | 示,肌酐和尿素水平正常。 108 | 其他检查结果中,心电图显示心脏功能正常,无心律失常。腹部超声检查显示肝脏轻度脂肪 109 | 肝,无其他明显异常。","根据王五的健康档案和最近的体检结果,存在以下健康风险: 110 | 1. 心血管疾病风险: 由于血脂水平偏高,尤其是低密度脂蛋白(LDL),王五患心血管疾病 111 | 的风险增加。需要采取措施降低胆固醇水平。 112 | 2. 体重管理问题: 由于体重指数超过正常范围,王五可能面临代谢综合征的风险,需通过 113 | 饮食和运动管理体重。 ","1. 胆固醇管理: 建议王五减少摄入高胆固醇和高饱和脂肪食物,增加膳食纤维的摄入,并 114 | 继续保持定期运动以帮助降低胆固醇。 115 | 2. 体重管理: 王五应通过控制饮食和增加运动来减轻体重,目标是将 BMI 降至 24 以下,减 116 | 少心血管疾病和代谢综合征的风险。3. 定期随访: 建议每 6 个月进行一次血脂和血压检查,监控心血管健康,并每年进行一次 117 | 全面体检。","1. 保持心血管健康: 通过饮食调整和运动保持血脂和血压在正常范围内,以降低心血管疾 118 | 病风险。 119 | 2. 体重控制: 将体重指数(BMI)控制在 24 以内,减少腹部脂肪堆积,防止代谢综合征。 120 | 3. 保持积极生活方式: 继续保持定期运动和健康饮食,提升整体生活质量和健康水平。" 121 | -------------------------------------------------------------------------------- /RagSearch/txtRAGTest/健康档案.txt: -------------------------------------------------------------------------------- 1 | 健康档案 2 | 一、基本信息 3 | 张三九,男,出生于 1985 年 5 月 20 日,目前 39 岁,已婚,职业为 IT 工程师。张三九的 4 | 血型为 O 型,联系电话为 138-1234-5678,电子邮箱为 zhangsan@example.com,居住在 5 | 上海市浦东新区张江路 123 号。其紧急联系人为妻子李四六,联系电话为 138-8765-4321。 6 | 二、医疗历史 7 | 张三九在 2005 年被确诊为高血压,自此开始接受降压药物治疗。2010 年,他被确诊为二 8 | 型糖尿病,并开始使用口服降糖药进行管理。2017 年,张三九被诊断为脂肪肝,医生建议 9 | 通过饮食调整和增加运动来改善这一状况。2022 年,他因腰椎间盘突出接受了微创手术, 10 | 术后恢复良好。此外,张三九对青霉素有过敏反应,曾出现皮疹和呼吸困难。海鲜会导致轻 11 | 度皮肤发痒,表明他对海鲜也有一定的过敏反应。张三九的家族病史显示,父亲患有高血压 12 | 和二型糖尿病,母亲则有甲状腺疾病史。 13 | 三、生活方式和习惯 14 | 张三九的饮食习惯偏向高脂肪和高糖食品,日常饮食中蔬菜和水果的摄入较少,盐分摄入偏 15 | 高。他的工作繁忙,运动较少,每周仅进行一次轻度运动,如散步。张三九无吸烟史,但每 16 | 周饮酒 2 至 3 次,每次约 300 毫升啤酒。他的平均睡眠时间为每晚 6 小时,常常感到疲惫。 17 | 四、体检与化验结果 18 | 张三九最近一次体检是在 2024 年 8 月 15 日,体检结果显示他的身高为 175 厘米,体重为 19 | 78 公斤,体重指数(BMI)为 25.5,表明体重超重。他的腰围为 92 厘米,略高于健康范围。 20 | 血压测量结果为 135/85 毫米汞柱,属于轻度高血压范围。心率为每分钟 78 次,处于正常 21 | 范围。 22 | 在实验室检查中,张三九的空腹血糖为 6.8 毫摩尔/升,略高于正常范围;餐后 2 小时血糖 23 | 为 8.9 毫摩尔/升,也高于正常标准。血脂检查结果显示,总胆固醇为 5.2 毫摩尔/升,处于 24 | 正常范围,甘油三酯为 1.8 毫摩尔/升,略高于正常,低密度脂蛋白(LDL)为 3.4 毫摩尔/ 25 | 升,略高。肝功能检查显示,谷丙转氨酶(ALT)和谷草转氨酶(AST)的水平正常,分别 26 | 为 28 和 25 单位/升。肾功能检查显示,肌酐、尿素和尿酸水平均处于正常范围内。 27 | 其他检查结果中,心电图显示张三九的心脏功能正常,未发现异常心律。胸片检查结果显示 28 | 其肺部和胸腔无异常,腹部超声检查显示脂肪肝轻度增加,但未发现其他异常。 29 | 五、健康风险评估 30 | 根据张三九的健康档案及最新体检结果,存在以下健康风险: 31 | 1. 心血管疾病风险: 由于血压偏高和血脂异常,张三九存在较高的心血管疾病风险。建议 32 | 进一步控制血压和血脂水平。 33 | 2. 糖尿病管理不足: 张三九的血糖控制不理想,存在糖尿病并发症的潜在风险。需要进一 34 | 步优化糖尿病管理方案。 35 | 3. 肥胖相关问题: 张三九的体重指数略高,腰围也超过健康范围,提示存在代谢综合征的 36 | 风险。 37 | 六、医生建议 38 | 1. 饮食控制: 建议张三九减少高糖、高脂肪食物的摄入,增加蔬菜和水果的摄入量,控制 39 | 盐分摄入,减少加工食品的使用。 40 | 2. 增加运动量: 张三九每周应至少进行三次中等强度的有氧运动,如快走或跑步,每次至 41 | 少 30 分钟。 42 | 3. 药物管理: 建议张三九继续遵医嘱服用降压药和降糖药,定期监测血压和血糖水平。 43 | 4. 定期随访: 每三个月进行一次血压、血糖和血脂的随访监测,并每年进行一次全面体检, 44 | 以动态评估健康状况。 45 | 5. 生活方式调整: 张三九需要改善睡眠质量,减少压力,尝试冥想或其他放松技巧,以提 46 | 升整体生活质量。 47 | 七、长期目标 48 | 1. 体重管理: 将体重指数控制在 24 以内,减少腹部脂肪堆积。 49 | 2. 血糖管理: 将空腹血糖控制在 6.0 毫摩尔/升以下,餐后 2 小时血糖控制在 7.8 毫摩尔/升 50 | 以下。 51 | 3. 血压管理: 将血压控制在 120/80 毫米汞柱以下,以降低心血管疾病风险。 52 | 4. 改善生活质量: 通过增加运动频率和强度、改善睡眠质量、减轻工作压力等措施,提升 53 | 生活质量。 54 | 健康档案 55 | 一、基本信息 56 | 患者姓名为李四六,女性,出生于 1990 年 3 月 15 日,目前 34 岁,已婚,职业为小学教师。 57 | 李四六的血型为 A 型,她的联系电话为 139-9876-5432,电子邮箱为 lisi@example.com, 58 | 居住地址为北京市海淀区中关村大街 456 号。紧急联系人为她的丈夫王五,联系电话为 59 | 139-1234-5678。 60 | 二、医疗历史 61 | 李四六的医疗历史包括以下内容: 62 | 既往病史: 63 | 2015 年: 李四六因甲状腺功能亢进接受了抗甲状腺药物治疗,病情稳定后目前已经停止 64 | 用药。 65 | 2018 年: 李四六在怀孕期间被诊断为妊娠糖尿病,产后血糖水平恢复正常,但仍需定期 66 | 监测血糖。 67 | 2020 年: 李四六在一次例行体检中发现胆固醇偏高,医生建议她通过饮食控制和增加运 68 | 动来管理胆固醇水平。 69 | 手术史: 70 | 李四六无重大手术史。 71 | 过敏史: 72 | 药物过敏: 李四六对阿司匹林过敏,曾出现皮疹和轻度呼吸困难。 73 | 食物过敏: 李四六对坚果过敏,食用后会导致口腔肿胀和皮肤发痒。 74 | 家族病史: 75 | 父亲: 高血压和冠心病。 76 | 母亲: 无重大疾病史。 77 | 三、生活方式和习惯 78 | 李四六的生活方式健康,饮食习惯以清淡为主,平时注重均衡摄入蔬菜、水果和蛋白质,少 79 | 食高脂肪和高糖食物。李四六保持每周三次的有氧运动,如跑步和瑜伽,每次约 45 分钟。 80 | 她没有吸烟史,也很少饮酒,仅在社交场合偶尔饮用少量红酒。李四六的睡眠质量较好,每 81 | 晚平均睡眠时间为 7 至 8 小时。 82 | 四、体检与化验结果 83 | 李四六最近一次体检是在 2024 年 7 月 20 日,结果显示她的身高为 162 厘米,体重为 58 84 | 公斤,体重指数(BMI)为 22.1,处于正常范围内。她的血压为 120/75 毫米汞柱,属于正 85 | 常范围,心率为每分钟 70 次,显示心脏功能正常。 86 | 在实验室检查中,李四六的空腹血糖为 5.2 毫摩尔/升,正常。血脂检查显示,总胆固醇为 87 | 5.8 毫摩尔/升,略高于正常范围,低密度脂蛋白(LDL)为 3.2 毫摩尔/升,略高于正常水平。 88 | 肝功能检查显示,谷丙转氨酶(ALT)为 18 单位/升,谷草转氨酶(AST)为 20 单位/升, 89 | 均处于正常范围。肾功能检查结果显示,肌酐、尿素和尿酸水平均在正常范围内。 90 | 此外,李四六的心电图结果显示心律正常,未发现异常。腹部超声检查未见肝脏或胆囊的明 91 | 显异常,肾脏形态正常。 92 | 五、健康风险评估 93 | 根据李四六的健康档案和最近的体检结果,存在以下健康风险: 94 | 1. 心血管疾病风险: 李四六的胆固醇水平偏高,尤其是低密度脂蛋白(LDL),这增加了她 95 | 患心血管疾病的风险。建议继续通过饮食和运动管理胆固醇水平。 96 | 2. 潜在糖尿病风险: 虽然李四六目前血糖水平正常,但考虑到她曾有妊娠糖尿病史,未来 97 | 可能存在糖尿病风险,建议定期监测血糖。 98 | 六、医生建议 99 | 1. 胆固醇管理: 建议李四六进一步减少饮食中饱和脂肪和反式脂肪的摄入,增加富含纤维 100 | 的食物,如全谷物、蔬菜和水果,并继续保持定期运动习惯,以帮助降低胆固醇水平。 101 | 2. 糖尿病预防: 建议李四六定期进行空腹血糖和糖化血红蛋白(HbA1c)检查,尤其是在 102 | 体重增加或生活方式改变时,以便及早发现潜在的糖尿病问题。 103 | 3. 保持健康生活方式: 李四六应继续维持健康的饮食和运动习惯,并确保充足的睡眠和减 104 | 轻压力,以保持整体健康。 105 | 七、长期目标 106 | 1. 保持正常体重: 李四六目前的体重指数在健康范围内,目标是保持这一体重,避免肥胖 107 | 相关健康问题。 108 | 2. 管理血脂水平: 将总胆固醇和低密度脂蛋白(LDL)水平控制在正常范围内,以降低心血 109 | 管疾病风险。 110 | 3. 预防糖尿病: 通过健康的饮食和生活方式,避免未来糖尿病的发生。 111 | 健康档案 112 | 一、基本信息 113 | 患者姓名为王五,男性,出生于 1978 年 12 月 2 日,目前 45 岁,已婚,职业为银行经理。 114 | 王五的血型为 B 型,他的联系电话为 136-1234-8765,电子邮箱为 wangwu@example.com, 115 | 居住地址为广州市天河区体育东路 789 号。紧急联系人为其妻子赵六,联系电话为 116 | 136-8765-1234。 117 | 二、医疗历史 118 | 王五的医疗历史包括以下内容: 119 | 既往病史: 120 | 2008 年: 王五因高血压开始服用降压药,至今一直在用药,血压控制良好。 121 | 2012 年: 被诊断为胃溃疡,接受了抗溃疡治疗,病情得到控制,目前通过饮食调理保持 122 | 胃部健康。 123 | 2016 年: 由于腰椎间盘突出,接受了保守治疗,症状缓解,目前通过定期锻炼和理疗维 124 | 持腰部健康。 125 | 手术史: 126 | 2010 年: 王五因阑尾炎接受了阑尾切除手术,术后恢复良好,无并发症。 127 | 过敏史: 128 | 药物过敏: 王五对头孢类抗生素有过敏反应,曾出现皮疹和轻度发热。 129 | 食物过敏: 无明显食物过敏史。 130 | 家族病史: 131 | 父亲: 高血压和冠心病。 132 | 母亲: 2 型糖尿病。 133 | 三、生活方式和习惯 134 | 王五的生活方式中规中矩,平日饮食以家常菜为主,偶尔外出聚餐时会进食较多的肉类和海 135 | 鲜。他的饮食中包含适量的蔬菜和水果,但也存在较高的盐分摄入。王五每周至少进行两次 136 | 高尔夫运动,每次约 1 小时,并会在周末进行长时间的步行。他无吸烟史,但偶尔饮酒, 137 | 每周不超过两次,每次约 500 毫升啤酒。他的平均睡眠时间为 6 至 7 小时,睡眠质量一般。 138 | 四、体检与化验结果 139 | 王五最近一次体检是在 2024 年 8 月 5 日,结果显示他的身高为 180 厘米,体重为 85 公斤, 140 | 体重指数(BMI)为 26.2,表明其体重略超标。他的血压为 130/80 毫米汞柱,虽然控制在 141 | 正常范围,但接近高限,心率为每分钟 75 次,显示心脏功能正常。 142 | 在实验室检查中,王五的空腹血糖为 5.5 毫摩尔/升,正常范围内。血脂检查显示,总胆固 143 | 醇为 6.0 毫摩尔/升,略高,低密度脂蛋白(LDL)为 3.5 毫摩尔/升,高密度脂蛋白(HDL) 144 | 为 1.2 毫摩尔/升,甘油三酯为 1.9 毫摩尔/升,均略高。肝功能检查结果显示,谷丙转氨酶 145 | (ALT)为 35 单位/升,谷草转氨酶(AST)为 30 单位/升,处于正常范围。肾功能检查显 146 | 示,肌酐和尿素水平正常。 147 | 其他检查结果中,心电图显示心脏功能正常,无心律失常。腹部超声检查显示肝脏轻度脂肪 148 | 肝,无其他明显异常。 149 | 五、健康风险评估 150 | 根据王五的健康档案和最近的体检结果,存在以下健康风险: 151 | 1. 心血管疾病风险: 由于血脂水平偏高,尤其是低密度脂蛋白(LDL),王五患心血管疾病 152 | 的风险增加。需要采取措施降低胆固醇水平。 153 | 2. 体重管理问题: 由于体重指数超过正常范围,王五可能面临代谢综合征的风险,需通过 154 | 饮食和运动管理体重。 155 | 六、医生建议 156 | 1. 胆固醇管理: 建议王五减少摄入高胆固醇和高饱和脂肪食物,增加膳食纤维的摄入,并 157 | 继续保持定期运动以帮助降低胆固醇。 158 | 2. 体重管理: 王五应通过控制饮食和增加运动来减轻体重,目标是将 BMI 降至 24 以下,减 159 | 少心血管疾病和代谢综合征的风险。 160 | 3. 定期随访: 建议每 6 个月进行一次血脂和血压检查,监控心血管健康,并每年进行一次 161 | 全面体检。 162 | 七、长期目标 163 | 1. 保持心血管健康: 通过饮食调整和运动保持血脂和血压在正常范围内,以降低心血管疾 164 | 病风险。 165 | 2. 体重控制: 将体重指数(BMI)控制在 24 以内,减少腹部脂肪堆积,防止代谢综合征。 166 | 3. 保持积极生活方式: 继续保持定期运动和健康饮食,提升整体生活质量和健康水平。 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 1、介绍 2 | ## 1.1 主要内容 3 | 本期系列相关视频为大家测试CrewAI官方提供的Tools,按照发布的先后顺序: 4 | **(第一期)[2025.01.02]RAG搜索(1)** 5 | 主要内容:针对官方提供的CSV、DOCX、PDF、TXT文件内容检索工具进行RAG应用。提供工具demo测试和Crew应用测试,并为大家演示两种大模型GPT和阿里通义千问 6 | 相关视频: 7 | https://www.bilibili.com/video/BV1yg66YfEr9/ 8 | https://youtu.be/b3eB_rfKF_c 9 | 10 | ## 1.2 CrewAI框架 11 | CrewAI是一个用于构建多Agent协作应用的框架,它能够让多个具有不同角色和目标的Agent共同协作,完成复杂的任务 12 | 该工具可以将任务分解,分配给不同的Agent,借助它们的特定技能和工具,完成各自负责的子任务,最终实现整体任务目标 13 | 官网:https://www.crewai.com/ 14 | GitHub:https://github.com/crewAIInc/crewAI 15 | 关于CrewAI更多的应用,大家请查看我的主页,有关于CrewAI基础及高阶应用分享 16 | 17 | 18 | # 2、前期准备工作 19 | ## 2.1 开发环境搭建:anaconda、pycharm 20 | anaconda:提供python虚拟环境,官网下载对应系统版本的安装包安装即可 21 | pycharm:提供集成开发环境,官网下载社区版本安装包安装即可 22 | **可参考如下视频:** 23 | 集成开发环境搭建Anaconda+PyCharm 24 | https://www.bilibili.com/video/BV1q9HxeEEtT/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 25 | https://youtu.be/myVgyitFzrA 26 | 27 | ## 2.2 大模型相关配置 28 | (1)GPT大模型使用方案(第三方代理方式) 29 | (2)非GPT大模型(阿里通义千问、讯飞星火、智谱等大模型)使用方案(OneAPI方式) 30 | (3)本地开源大模型使用方案(Ollama方式) 31 | **可参考如下视频:** 32 | 提供一种LLM集成解决方案,一份代码支持快速同时支持gpt大模型、国产大模型(通义千问、文心一言、百度千帆、讯飞星火等)、本地开源大模型(Ollama) 33 | https://www.bilibili.com/video/BV12PCmYZEDt/?vd_source=30acb5331e4f5739ebbad50f7cc6b949 34 | https://youtu.be/CgZsdK43tcY 35 | 36 | 37 | # 3、项目初始化 38 | ## 3.1 下载源码 39 | GitHub或Gitee中下载工程文件到本地,下载地址如下: 40 | https://github.com/NanGePlus/CrewAIToolsTest 41 | https://gitee.com/NanGePlus/CrewAIToolsTest 42 | 43 | ## 3.2 构建项目 44 | 使用pycharm构建一个项目,为项目配置虚拟python环境 45 | 项目名称:CrewAIToolsTest 46 | 虚拟环境名称保持与项目名称一致 47 | 48 | ## 3.3 将相关代码拷贝到项目工程中 49 | 将下载的代码文件夹中的文件全部拷贝到新建的项目根目录下 50 | 51 | ## 3.4 安装项目依赖 52 | 打开命令行终端在项目根目录下执行如下命令安装依赖包 53 | pip install -r requirements.txt 54 | 每个软件包后面都指定了本次视频测试中固定的版本号,建议先使用要求的对应版本进行本项目测试,避免因版本升级造成的代码不兼容。测试通过后,可进行升级测试 55 | 56 | 57 | # 4、项目测试 58 | 运行脚本分别测试CSV、DOCX、PDF、TXT文件内容RAG 59 | 运行脚本前根据自己实际情况调整大模型相关参数 60 | **(1).env环境变量参数调整** 61 | GPT大模型配置参数(代理方式): 62 | OPENAI_BASE_URL=https://yunwu.ai/v1 63 | OPENAI_API_KEY=sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc 64 | OPENAI_CHAT_MODEL=gpt-4o-mini 65 | 国产大模型阿里通义千问配置参数(使用OneAPI方式): 66 | OPENAI_BASE_URL=http://139.224.72.218:3000/v1 67 | OPENAI_API_KEY=sk-yYmtTYwbJBlPzW23B208Dc345c57489bB192A6BfF694207b 68 | OPENAI_CHAT_MODEL=openai/qwen-plus 69 | **(2)tools中指定模型配置** 70 | GPT大模型配置参数(代理方式): 71 | tool = CSVSearchTool( 72 | config=dict( 73 | llm=dict( 74 | provider="openai", 75 | config=dict( 76 | base_url="https://yunwu.ai/v1", 77 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 78 | model="gpt-4o-mini" 79 | ), 80 | ), 81 | embedder=dict( 82 | provider="openai", 83 | config=dict( 84 | api_base="https://yunwu.ai/v1", 85 | api_key="sk-ux4NQ9lOgCwqJMrJjjungDRDwZjlGqCnaln9n5aAnwQv8FEc", 86 | model="text-embedding-3-small" 87 | ), 88 | ), 89 | ) 90 | ) 91 | 国产大模型阿里通义千问配置参数(使用OneAPI方式): 92 | tool = CSVSearchTool( 93 | config=dict( 94 | llm=dict( 95 | provider="openai", 96 | config=dict( 97 | base_url="http://139.224.72.218:3000/v1", 98 | api_key="sk-yYmtTYwbJBlPzW23B208Dc345c57489bB192A6BfF694207b", 99 | model="qwen-plus" 100 | ), 101 | ), 102 | embedder=dict( 103 | provider="openai", 104 | config=dict( 105 | api_base="http://139.224.72.218:3000/v1", 106 | api_key="sk-yYmtTYwbJBlPzW23B208Dc345c57489bB192A6BfF694207b", 107 | model="text-embedding-v1" 108 | ), 109 | ), 110 | ) 111 | ) 112 | 113 | 114 | 115 | 116 | --------------------------------------------------------------------------------