import requests from typing import List, Optional class KnowledgeBaseAPI: def __init__(self, base_url: str): self.base_url = base_url.rstrip('/') def get_file_list(self) -> List[str]: """获取服务器上的文件列表""" try: response = requests.get(f"{self.base_url}/list", timeout=10) response.raise_for_status() return response.json() except requests.RequestException as e: raise Exception(f"获取文件列表失败: {str(e)}") def get_file(self, filename: str) -> str: """获取文件内容""" try: response = requests.get(f"{self.base_url}/{filename}/get", timeout=10) response.raise_for_status() return response.text except requests.RequestException as e: raise Exception(f"获取文件 {filename} 失败: {str(e)}") def post_file(self, filename: str, content: str) -> bool: """上传文件内容""" try: files = {'file': (filename, content, 'text/markdown')} response = requests.post(f"{self.base_url}/{filename}/post", files=files, timeout=10) response.raise_for_status() return True except requests.RequestException as e: raise Exception(f"上传文件 {filename} 失败: {str(e)}") def test_connection(self) -> bool: """测试服务器连接""" try: response = requests.get(f"{self.base_url}/list", timeout=5) return response.status_code == 200 except requests.RequestException: return False