""" 使用硅基流动API的示例 """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent)) from src.utils.llm_client import LLMClient, LLMProvider from src.utils.config import load_config from src.extraction.ner import NERExtractor def example_basic_usage(): """基础使用示例""" print("示例1: 基础API调用") print("-" * 60) config = load_config() client = LLMClient( provider=LLMProvider.SILICONFLOW, model="Qwen/Qwen2.5-72B-Instruct", # 请根据实际情况修改 config=config ) messages = [ {"role": "system", "content": "你是一个法规文本分析专家。"}, {"role": "user", "content": "请分析以下文本中的实体:城市更新需要遵循国土空间规划的要求。"} ] response = client.chat(messages) print(f"响应: {response}\n") def example_ner_with_siliconflow(): """使用硅基流动进行实体识别""" print("示例2: 使用硅基流动进行实体识别") print("-" * 60) config = load_config() # 注意:NERExtractor默认使用Qwen,我们可以修改为使用硅基流动 # 方法1: 直接创建NER提取器并替换LLM客户端 ner_extractor = NERExtractor(model="Qwen/Qwen2.5-72B-Instruct", config=config) # 替换为硅基流动客户端 ner_extractor.llm_client = LLMClient( provider=LLMProvider.SILICONFLOW, model="Qwen/Qwen2.5-72B-Instruct", # 请根据实际情况修改 config=config ) text = "城市更新应当遵循国土空间规划,坚持生态优先、绿色发展原则。" entities = ner_extractor.extract(text) print(f"输入文本: {text}") print(f"识别到的实体: {entities}\n") def example_multi_provider_comparison(): """多提供商对比示例""" print("示例3: 对比不同LLM提供商的响应") print("-" * 60) config = load_config() messages = [ {"role": "user", "content": "什么是知识图谱?用一句话回答。"} ] providers = [ (LLMProvider.SILICONFLOW, "Qwen/Qwen2.5-72B-Instruct"), # 可以添加其他提供商进行对比 ] for provider, model in providers: try: client = LLMClient(provider=provider, model=model, config=config) response = client.chat(messages) print(f"{provider.value}: {response[:100]}...") except Exception as e: print(f"{provider.value}: 调用失败 - {e}") if __name__ == "__main__": print("=" * 60) print("硅基流动API使用示例") print("=" * 60) print() # 运行示例 try: example_basic_usage() except Exception as e: print(f"示例1执行失败: {e}\n") try: example_ner_with_siliconflow() except Exception as e: print(f"示例2执行失败: {e}\n") try: example_multi_provider_comparison() except Exception as e: print(f"示例3执行失败: {e}\n")