[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Pravko-Solutions--FlashLearn":3,"tool-Pravko-Solutions--FlashLearn":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":77,"owner_url":78,"languages":79,"stars":84,"forks":85,"last_commit_at":86,"license":87,"difficulty_score":23,"env_os":88,"env_gpu":89,"env_ram":90,"env_deps":91,"category_tags":98,"github_topics":99,"view_count":23,"oss_zip_url":77,"oss_zip_packed_at":77,"status":16,"created_at":109,"updated_at":110,"faqs":111,"releases":112},3792,"Pravko-Solutions\u002FFlashLearn","FlashLearn","Integrate LLM in any pipeline - fit\u002Fpredict pattern, JSON driven flows, and built in concurency support.","FlashLearn 是一款专为简化大语言模型（LLM）集成而设计的开源 Python 库，旨在让开发者像使用传统机器学习库一样，轻松将 AI 智能体融入数据管道与 ETL 流程中。它有效解决了在复杂业务流中调用 LLM 代码繁琐、并发管理困难以及输出结果非结构化等痛点，让用户能专注于数据转换、分类、摘要及多步骤任务本身。\n\n该工具特别适合需要高效处理文本数据的后端开发者、数据工程师及 AI 应用构建者。其核心亮点在于独特的“技能学习”机制：用户只需提供少量示例和自然语言指令，FlashLearn 即可自动“学会”特定任务并保存为紧凑的 JSON 定义，后续可直接加载复用，完美契合机器学习中的 fit\u002Fpredict 模式。此外，FlashLearn 内置高并发支持（最高可达每分钟 1000 次调用），兼容 OpenAI、Ollama、LiteLLM 等多种主流模型接口，并能确保所有输出均为结构化的字典格式，极大降低了将非结构化文本转化为可用数据的门槛，是构建稳健 AI 工作流的得力助手。","# Flash Learn - Agents made simple\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)  ![Pure Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-Pure-blue)  ![Test Coverage](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCoverage-95%25-brightgreen) ![Code Size](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flanguages\u002Fcode-size\u002FPravko-Solutions\u002FFlashLearn)\n\nFlashLearn provides a simple interface and orchestration **(up to 1000 calls\u002Fmin)** for incorporating **Agent LLMs** into your typical workflows and ETL pipelines. Conduct data transformations, classifications, summarizations, rewriting, and custom multi-step tasks, just like you’d do with any standard ML library, harnessing the power of LLMs under the hood. Each **step and task has a compact JSON definition** which makes pipelines simple to understand and maintain. It supports **LiteLLM**, **Ollama**, **OpenAI**, **DeepSeek**, and all other OpenAI-compatible clients.\n\n### 🚀 [Examples](https:\u002F\u002Fgithub.com\u002FPravko-Solutions\u002FFlashLearn\u002Ftree\u002Fmain\u002Fexamples)  \n### 📖 [Full Documentation](https:\u002F\u002Fflashlearn.tech\u002Findex.php\u002Fdocs\u002F)  \n\n## Installation\n\n```bash\npip install flashlearn\n```\nAdd the API keys for the provider you want to use to your .env file.\n```bash\nOPENAI_API_KEY=\n```\n\n## High-Level Concept Flow\n\n```mermaid\nflowchart TB\n    classDef smallBox font-size:12px, padding:0px;\n\n    H[Your Data] --> I[Load Skill \u002F Learn Skill]\n    I --> J[Create Tasks]\n    J --> K[Run Tasks]\n    K --> L[Structured Results]\n    L --> M[Downstream Steps]\n\n    class H,I,J,K,L,M smallBox;\n```\n\n---\n\n## Learning a New “Skill”\n\nLike a fit\u002Fpredict pattern, you can quickly “learn” a custom skill. Below, we’ll create a skill that evaluates the likelihood of buying a product from user comments on social media posts, returning a score (1–100) and a short reason. We’ll instruct the LLM to transform each comment according to our custom specifications.\n\n```python\nfrom flashlearn.skills.learn_skill import LearnSkill\nfrom openai import OpenAI\n\n# Instantiate your pipeline “estimator” or “transformer”\nlearner = LearnSkill(model_name=\"gpt-4o-mini\", client=OpenAI())\n# Provide instructions and sample data for the new skill\nskill = learner.learn_skill(\n    df=[], #dif you want you can also pass data sample\n    task=(\n        \"Evaluate how likely the user is to buy my product based on the sentiment in their comment, \"\n        \"return an integer 1-100 on key 'likely_to_buy', \"\n        \"and a short explanation on key 'reason'.\"\n    ),\n)\n\n# Save skill to be used from any system\nskill.save(\"evaluate_buy_comments_skill.json\")\n\n```\n\n---\n\n## Input Is a List of Dictionaries\n\nWhether you retrieved data from an API, a spreadsheet, or user-submitted forms, you can simply wrap each record into a dictionary. FlashLearn’s “skills” accept a list of such dictionaries, as shown below:\n\n```python\nuser_inputs = [\n    {\"comment_text\": \"I love this product, it's everything I wanted!\"},\n    {\"comment_text\": \"Not impressed... wouldn't consider buying this.\"},\n    # ...\n]\n```\n\n---\n\n## Run in 3 Lines of Code\n\nOnce you’ve defined or learned a skill, you can load it as though it were a specialized transformer in a standard ML pipeline. Then apply it to your data in just a few lines:\n\n```python\nfrom flashlearn.skills.general_skill import GeneralSkill\n\nwith open(\"evaluate_buy_comments_skill.json\", \"r\", encoding=\"utf-8\") as file:\n    definition= json.load(file)\n\n# Suppose we previously saved a learned skill to \"evaluate_buy_comments_skill.json\".\nskill = GeneralSkill.load_skill(definition)\n\ntasks = skill.create_tasks(user_inputs)\nresults = skill.run_tasks_in_parallel(tasks)\nprint(results)\n```\n\n---\n\n## Get Structured Results\n\nFlashLearn returns structured outputs for each of your records. The keys in the results dictionary map to the indexes of your original list. For example:\n\n```json\n{\n  \"0\": {\n    \"likely_to_buy\": 90,\n    \"reason\": \"Comment shows strong enthusiasm and positive sentiment.\"\n  },\n  \"1\": {\n    \"likely_to_buy\": 25,\n    \"reason\": \"Expressed disappointment and reluctance to purchase.\"\n  }\n}\n```\n\n---\n\n## Pass on to Next Steps\n\nEach record’s output can then be used in downstream tasks. For instance, you might:\n\n1. Store the results in a database  \n2. Filter for high-likelihood leads  \n3. Send them to another tool for further analysis (for example, rewriting the “reason” in a formal tone)\n\nBelow is a small example showing how you might parse the dictionary and feed it into a separate function:\n\n```python\n# Suppose 'flash_results' is the dictionary with structured LLM outputs\nfor idx, result in flash_results.items():\n    desired_score = result[\"likely_to_buy\"]\n    reason_text = result[\"reason\"]\n    # Now do something with the score and reason, e.g., store in DB or pass to next step\n    print(f\"Comment #{idx} => Score: {desired_score}, Reason: {reason_text}\")\n```\n## Supported LLM Providers\nAnywhere you might rely on an ML pipeline component, you can swap in an LLM:\n\n```python\nclient = OpenAI()  # This is equivalent to instantiating a pipeline component \ndeep_seek = OpenAI(api_key='YOUR DEEPSEEK API KEY', base_url=\"https:\u002F\u002Fapi.deepseek.com\")\nlite_llm = FlashLiteLLMClient()  # LiteLLM integration Manages keys as environment variables, akin to a top-level pipeline manager\nollama =  OpenAI(base_url = 'http:\u002F\u002Flocalhost:11434\u002Fv1', api_key='ollama', # required, but unused) # Just use ollama's openai client\n```\n### KEY IDEA: JSON in, JSON out\n\n# Examples by use case\n- **Customer service** \n  - [Classifying customer tickets](examples\u002FCustomer%20service\u002Fclassify_tickets.md)\n\n- **Finance** \n  - [Parse financial report data](examples\u002FFinance\u002Fparse_financial_report_data.md)\n\n- **Marketing** \n  - [Customer segmentation](examples\u002FMarketing\u002Fcustomer_segmentation.md)\n\n- **Personal assistant** \n  - [Research assistant](examples\u002FPersonal%20asistant\u002Fresearch_assistant.md)\n\n- **Product intelligence** \n  - [Discover trends in product_reviews](examples\u002FProduct%20intelligence\u002Fdiscover_trends_in_prodcut%20_reviews.md)\n  - [User behaviour analysis](examples\u002FProduct%20intelligence\u002Fuser_behaviour_analysis.md)\n\n- **Sales** \n  - [Personalized cold emails](examples\u002FSales\u002Fpersonalized_emails.md)\n  - [Sentiment classification](examples\u002FSales\u002Fsentiment_classification.md)\n\n- **Software development** \n  - [Automated PR reviews](examples\u002FSoftware%20development\u002Fautomated_pr_reviews.md)\n\n###  --> [Full Documentation](https:\u002F\u002Fflashlearn.tech\u002Findex.php\u002Fdocs\u002F)\n\n# Customization\n\n## “All JSON, All the Time”: Example Classification Workflow\n\nThe following example classifies IMDB movie reviews into “positive” or “negative” sentiment. Notice how at each step you can view, store, or chain the partial results—always in JSON format.\n\n```python\nfrom flashlearn.utils import imdb_reviews_50k\nfrom flashlearn.skills import GeneralSkill\nfrom flashlearn.skills.toolkit import ClassifyReviewSentiment\nimport json\nimport os\n\n\ndef main():\n  os.environ[\"OPENAI_API_KEY\"] = \"API-KEY\"\n\n  # Step 1: Load or generate your data\n  data = imdb_reviews_50k(sample=100)  # 100 sample reviews\n\n  # Step 2: Load JSON definition of skill in dict format\n  skill = GeneralSkill.load_skill(ClassifyReviewSentiment)\n\n  # Step 3: Save skill definition in JSON for later loading\n  # skill.save(\"BinaryClassificationSkill.json\")\n\n  # Step 5: Convert data rows into JSON tasks\n  tasks = skill.create_tasks(data)\n\n  # Step 6: Save results to a JSONL file and run now or later\n  with open('tasks.jsonl', 'w') as jsonl_file:\n    for entry in tasks:\n      jsonl_file.write(json.dumps(entry) + '\\n')\n\n  # Step 7: Run tasks (in parallel by default)\n  results = skill.run_tasks_in_parallel(tasks)\n\n  # Step 8: Every output is strict JSON\n  # You can easily map results back to inputs\n  # e.g., store results as JSON Lines\n  with open('sentiment_results.jsonl', 'w') as f:\n    for task_id, output in results.items():\n      input_json = data[int(task_id)]\n      input_json['result'] = output\n      f.write(json.dumps(input_json) + '\\n')\n\n  # Step 9: Inspect or chain the JSON results\n  print(\"Sample result:\", results.get(\"0\"))\n\n\nif __name__ == \"__main__\":\n  main()\n```\n\nThe output is consistently keyed by task ID (`\"0\"`, `\"1\"`, etc.), with the JSON content that your pipeline can parse or store with no guesswork.\n\n---\n\n## “Skill” Is Just a Simple Dictionary\n\nInternally, a skill is just a compact JSON-like object containing instructions and, optionally, function definitions to strictly validate LLM outputs. You can generate this skill from sample data (as shown above) or create it directly:\n\n```python\nEvaluateToBuySkill = {\n  \"skill_class\": \"GeneralSkill\",\n  \"system_prompt\": \"Evaluate how likely the user is to buy our product, returning an integer 1-100 and a short reason.\",\n  \"function_definition\": {\n    \"type\": \"function\",\n    \"function\": {\n      \"name\": \"EvaluateToBuySkill\",\n      \"description\": \"Assess user text with respect to willingness to buy a certain product.\",\n      \"strict\": True,\n      \"parameters\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"likely_to_buy\": {\n            \"type\": \"integer\",\n            \"description\": \"A number from 1 to 100 indicating how likely the user is to buy.\"\n          },\n          \"reason\": {\n            \"type\": \"string\",\n            \"description\": \"A brief explanation of why this is the likely score.\"\n          }\n        },\n        \"required\": [\"likely_to_buy\", \"reason\"],\n        \"additionalProperties\": False\n      }\n    }\n  }\n}\n```\n\nYou can load or save this skill to JSON as needed, version it, share it, or plug it into your pipelines. FlashLearn makes the entire process—training, storing, loading, and using such custom LLM transformations—simple and uniform.\n\n--------------------------------------------------------------------------------\n## Single-Step Classification Using Prebuilt Skills\nClassic classification tasks are as straightforward as calling “fit_predict” on a ML estimator:\n\n```python\nimport os\nfrom openai import OpenAI\nfrom flashlearn.skills.classification import ClassificationSkill\n\nos.environ[\"OPENAI_API_KEY\"] = \"YOUR_API_KEY\"\ndata = [{\"message\": \"Where is my refund?\"}, {\"message\": \"My product was damaged!\"}]\n\nskill = ClassificationSkill(\n    model_name=\"gpt-4o-mini\",\n    client=OpenAI(),\n    categories=[\"billing\",\"product issue\"],\n    system_prompt=\"Classify the request.\"\n)\n\ntasks = skill.create_tasks(data)\nprint(skill.run_tasks_in_parallel(tasks))\n```\n---\n\n## High-throughput\nProcess up to 999 tasks in 60 seconds on your local machine. For higher loads and enterprise needs contact us for enterprise solution.\n[![Enterprise Edition Demo](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FEnterprise%20Edition%20Demo-Click%20Here-blue)](https:\u002F\u002Fcalendly.com\u002Fflashlearn\u002Fenterprise-demo)\n\n```text\nProcessing tasks in parallel: 100%|██████████| 999\u002F999 [01:00\u003C00:00, 16.38 it\u002Fs, In total: 368969, Out total: 17288]\nINFO:ParallelProcessor:All tasks complete. 999 succeeded, 0 failed.\n```\n---\n\n## **Parallel Execution**: \n\n`run_tasks_in_parallel` organizes concurrent requests to the LLM.\n\n## **Cost Estimation**\nQuickly preview your token usage:\n  ```python\n  cost_estimate = skill.estimate_tasks_cost(tasks)\n  print(\"Estimated cost:\", cost_estimate)\n  ```\n---\n\n## Loading a Skill\n\nHere’s how the library handles comedic rewrites:\n\n```python\nfrom flashlearn.skills import GeneralSkill\nfrom flashlearn.skills.toolkit import HumorizeText\n\n\ndef main():\n  data = [{\"original_text\": \"We are behind schedule.\"}]\n  skill = GeneralSkill.load_skill(HumorizeText)\n  tasks = skill.create_tasks(data)\n  results = skill.run_tasks_in_parallel(tasks)\n  print(results)\n```\n\nYou’ll see output like:\n```json\n{\n  \"0\": {\n    \"comedic_version\": \"Hilarious take on your sentence...\"\n  }\n}\n```\nEverything is well-structured JSON, suitable for further analysis.\n\n---\n\n##  Contributing & Community\n\n- Licensed under MIT.  \n- [Fork us](flashlearn\u002F) to add new skills, fix bugs, or create new examples.  \n- We aim to make robust LLM workflows accessible to all startups.  \n- All code needs at least **95%** test coverage\n- Explore the [examples folder](examples\u002F) for more advanced usage patterns.\n\n---\n\n## License\n\n**MIT License**.  \nUse it in commercial products, and personal projects.\n\n---\n\n## “Hello World” Demos\n\n### Image Classification\n\n```python\nimport os\nfrom openai import OpenAI\nfrom flashlearn.skills.classification import ClassificationSkill\nfrom flashlearn.utils import cats_and_dogs\n\ndef main():\n    # os.environ[\"OPENAI_API_KEY\"] = 'YOUR API KEY'\n    data = cats_and_dogs(sample=6)\n\n    skill = ClassificationSkill(\n        model_name=\"gpt-4o-mini\",\n        client=OpenAI(),\n        categories=[\"cat\", \"dog\"],\n        max_categories=1,\n        system_prompt=\"Classify what's in the picture.\"\n    )\n\n    column_modalities = {\"image_base64\": \"image_base64\"}\n    tasks = skill.create_tasks(data, column_modalities=column_modalities)\n    results = skill.run_tasks_in_parallel(tasks)\n    print(results)\n\n    # Save skill definition for reuse\n    skill.save(\"MyCustomSkillIMG.json\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### Text Classification\n\n```python\nimport json\nimport os\nfrom openai import OpenAI\nfrom flashlearn.skills.classification import ClassificationSkill\nfrom flashlearn.utils import imdb_reviews_50k\n\ndef main():\n    # os.environ[\"OPENAI_API_KEY\"] = 'YOUR API KEY'\n    reviews = imdb_reviews_50k(sample=100)\n\n    skill = ClassificationSkill(\n        model_name=\"gpt-4o-mini\",\n        client=OpenAI(),\n        categories=[\"positive\", \"negative\"],\n        max_categories=1,\n        system_prompt=\"Classify short movie reviews by sentiment.\"\n    )\n\n    # Convert each row into a JSON-based task\n    tasks = skill.create_tasks([{'review': x['review']} for x in reviews])\n    results = skill.run_tasks_in_parallel(tasks)\n\n    # Compare predicted sentiment with ground truth for accuracy\n    correct = 0\n    for i, review in enumerate(reviews):\n        predicted = results[str(i)]['categories']\n        reviews[i]['predicted_sentiment'] = predicted\n        if review['sentiment'] == predicted:\n            correct += 1\n\n    print(f'Accuracy: {round(correct \u002F len(reviews), 2)}')\n\n    # Store final results as JSON Lines\n    with open('results.jsonl', 'w') as jsonl_file:\n        for entry in reviews:\n            jsonl_file.write(json.dumps(entry) + '\\n')\n\n    # Save the skill definition\n    skill.save(\"BinaryClassificationSkill.json\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n---\n\n## Final Words\n\nFlashLearn brings clarity to LLM workflows by enforcing consistent JSON output at every step. Whether you run a single classification or a multi-step pipeline, you can store partial results, debug easily, and maintain confidence in your data.  \n[![Support & Consulting](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSupport%20%26%20Consulting-Click%20Here-brightgreen)](https:\u002F\u002Fcalendly.com\u002Fflashlearn)\n\n","# Flash Learn - 让代理变得简单\n[![许可证：MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)  ![纯 Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-Pure-blue)  ![测试覆盖率](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCoverage-95%25-brightgreen) ![代码大小](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flanguages\u002Fcode-size\u002FPravko-Solutions\u002FFlashLearn)\n\nFlashLearn 提供了一个简单的接口和编排功能 **(最高可达每分钟1000次调用)**，用于将 **代理型大语言模型** 集成到您的典型工作流和 ETL 流水线中。您可以进行数据转换、分类、摘要生成、改写以及自定义的多步骤任务，就像使用任何标准的机器学习库一样，在底层利用大语言模型的强大能力。每个 **步骤和任务都有紧凑的 JSON 定义**，这使得流水线易于理解和维护。它支持 **LiteLLM**、**Ollama**、**OpenAI**、**DeepSeek** 以及其他所有与 OpenAI 兼容的客户端。\n\n### 🚀 [示例](https:\u002F\u002Fgithub.com\u002FPravko-Solutions\u002FFlashLearn\u002Ftree\u002Fmain\u002Fexamples)  \n### 📖 [完整文档](https:\u002F\u002Fflashlearn.tech\u002Findex.php\u002Fdocs\u002F)  \n\n## 安装\n\n```bash\npip install flashlearn\n```\n将您想要使用的提供商的 API 密钥添加到您的 .env 文件中。\n```bash\nOPENAI_API_KEY=\n```\n\n## 高层次概念流程\n\n```mermaid\nflowchart TB\n    classDef smallBox font-size:12px, padding:0px;\n\n    H[您的数据] --> I[加载技能 \u002F 学习技能]\n    I --> J[创建任务]\n    J --> K[运行任务]\n    K --> L[结构化结果]\n    L --> M[下游步骤]\n\n    class H,I,J,K,L,M smallBox;\n```\n\n---\n\n## 学习一项新“技能”\n\n类似于 fit\u002Fpredict 模式，您可以快速“学习”一项自定义技能。下面我们将创建一个技能，用于根据社交媒体帖子中的用户评论评估购买产品的可能性，并返回一个分数（1–100）和简短的理由。我们将指示大语言模型按照我们的自定义规范对每条评论进行转换。\n\n```python\nfrom flashlearn.skills.learn_skill import LearnSkill\nfrom openai import OpenAI\n\n# 实例化您的流水线“估计器”或“转换器”\nlearner = LearnSkill(model_name=\"gpt-4o-mini\", client=OpenAI())\n# 提供新技能的指令和样本数据\nskill = learner.learn_skill(\n    df=[], #如果您需要，也可以传递数据样本\n    task=(\n        \"根据用户评论中的情感，评估其购买我产品可能性的高低，\"\n        \"在 'likely_to_buy' 键下返回一个1到100之间的整数，\"\n        \"并在 'reason' 键下返回一段简短的解释。\"\n    ),\n)\n\n# 保存技能以便在任何系统中使用\nskill.save(\"evaluate_buy_comments_skill.json\")\n\n```\n\n---\n\n## 输入是一个字典列表\n\n无论您是从 API、电子表格还是用户提交的表单中获取的数据，都可以简单地将每条记录封装成一个字典。FlashLearn 的“技能”接受这样的字典列表，如下所示：\n\n```python\nuser_inputs = [\n    {\"comment_text\": \"我爱这款产品，正是我想要的！\"},\n    {\"comment_text\": \"不太满意……不会考虑购买这个。\"},\n    # ...\n]\n```\n\n---\n\n## 三行代码即可运行\n\n一旦您定义或学习了一项技能，就可以像使用标准机器学习流水线中的专用转换器一样加载它。然后只需几行代码即可将其应用于您的数据：\n\n```python\nfrom flashlearn.skills.general_skill import GeneralSkill\n\nwith open(\"evaluate_buy_comments_skill.json\", \"r\", encoding=\"utf-8\") as file:\n    definition= json.load(file)\n\n# 假设我们之前已将学习到的技能保存为 \"evaluate_buy_comments_skill.json\"。\nskill = GeneralSkill.load_skill(definition)\n\ntasks = skill.create_tasks(user_inputs)\nresults = skill.run_tasks_in_parallel(tasks)\nprint(results)\n```\n\n---\n\n## 获取结构化结果\n\nFlashLearn 会为您的每一条记录返回结构化的输出。结果字典中的键对应于您原始列表的索引。例如：\n\n```json\n{\n  \"0\": {\n    \"likely_to_buy\": 90,\n    \"reason\": \"评论表现出强烈的热情和积极的情感。\"\n  },\n  \"1\": {\n    \"likely_to_buy\": 25,\n    \"reason\": \"表达了失望和不愿购买的态度。\"\n  }\n}\n```\n\n---\n\n## 传递给下一步\n\n每条记录的输出随后可以用于下游任务。例如，您可以：\n\n1. 将结果存储到数据库中  \n2. 过滤出高可能性的潜在客户  \n3. 将它们发送到另一个工具进行进一步分析（例如，以正式语气改写“理由”）\n\n下面是一个小示例，展示如何解析该字典并将其传递给另一个函数：\n\n```python\n# 假设 'flash_results' 是包含结构化 LLM 输出的字典\nfor idx, result in flash_results.items():\n    desired_score = result[\"likely_to_buy\"]\n    reason_text = result[\"reason\"]\n    # 现在可以对分数和理由做些事情，比如存储到数据库或传递给下一步\n    print(f\"评论 #{idx} => 分数: {desired_score}, 理由: {reason_text}\")\n```\n## 支持的大语言模型提供商\n无论您在何处依赖机器学习流水线组件，都可以用大语言模型来替代：\n\n```python\nclient = OpenAI()  # 这相当于实例化一个流水线组件 \ndeep_seek = OpenAI(api_key='YOUR DEEPSEEK API KEY', base_url=\"https:\u002F\u002Fapi.deepseek.com\")\nlite_llm = FlashLiteLLMClient()  # LiteLLM 集成通过环境变量管理密钥，类似于顶级流水线管理者\nollama =  OpenAI(base_url = 'http:\u002F\u002Flocalhost:11434\u002Fv1', api_key='ollama', # 必需，但未使用) # 只需使用 ollama 的 openai 客户端\n```\n### 核心理念：输入 JSON，输出 JSON\n\n# 按用例划分的示例\n- **客户服务** \n  - [分类客户工单](examples\u002FCustomer%20service\u002Fclassify_tickets.md)\n\n- **金融** \n  - [解析财务报告数据](examples\u002FFinance\u002Fparse_financial_report_data.md)\n\n- **营销** \n  - [客户细分](examples\u002FMarketing\u002Fcustomer_segmentation.md)\n\n- **个人助理** \n  - [研究助理](examples\u002FPersonal%20asistant\u002Fresearch_assistant.md)\n\n- **产品情报** \n  - [发现产品评论中的趋势](examples\u002FProduct%20intelligence\u002Fdiscover_trends_in_prodcut%20_reviews.md)\n  - [用户行为分析](examples\u002FProduct%20intelligence\u002Fuser_behaviour_analysis.md)\n\n- **销售** \n  - [个性化冷邮件](examples\u002FSales\u002Fpersonalized_emails.md)\n  - [情感分类](examples\u002FSales\u002Fsentiment_classification.md)\n\n- **软件开发** \n  - [自动化 PR 审核](examples\u002FSoftware%20development\u002Fautomated_pr_reviews.md)\n\n###  --> [完整文档](https:\u002F\u002Fflashlearn.tech\u002Findex.php\u002Fdocs\u002F)\n\n# 自定义\n\n## “全程 JSON”：分类工作流示例\n\n以下示例将 IMDB 电影评论分类为“正面”或“负面”情感。请注意，在每一步中，您都可以查看、存储或串联部分结果——始终以 JSON 格式呈现。\n\n```python\nfrom flashlearn.utils import imdb_reviews_50k\nfrom flashlearn.skills import GeneralSkill\nfrom flashlearn.skills.toolkit import ClassifyReviewSentiment\nimport json\nimport os\n\n\ndef main():\n  os.environ[\"OPENAI_API_KEY\"] = \"API-KEY\"\n\n  # 步骤 1：加载或生成数据\n  data = imdb_reviews_50k(sample=100)  # 100 条样本评论\n\n  # 步骤 2：以字典格式加载技能的 JSON 定义\n  skill = GeneralSkill.load_skill(ClassifyReviewSentiment)\n\n  # 步骤 3：将技能定义保存为 JSON，以便后续加载\n  # skill.save(\"BinaryClassificationSkill.json\")\n\n  # 步骤 5：将数据行转换为 JSON 任务\n  tasks = skill.create_tasks(data)\n\n  # 步骤 6：将结果保存到 JSONL 文件中，可立即运行或稍后执行\n  with open('tasks.jsonl', 'w') as jsonl_file:\n    for entry in tasks:\n      jsonl_file.write(json.dumps(entry) + '\\n')\n\n  # 步骤 7：运行任务（默认并行）\n  results = skill.run_tasks_in_parallel(tasks)\n\n  # 步骤 8：每个输出都是严格的 JSON\n  # 您可以轻松地将结果映射回输入\n  # 例如，将结果存储为 JSON Lines\n  with open('sentiment_results.jsonl', 'w') as f:\n    for task_id, output in results.items():\n      input_json = data[int(task_id)]\n      input_json['result'] = output\n      f.write(json.dumps(input_json) + '\\n')\n\n  # 步骤 9：检查或串联 JSON 结果\n  print(\"示例结果:\", results.get(\"0\"))\n\n\nif __name__ == \"__main__\":\n  main()\n```\n\n输出始终以任务 ID（“0”、“1”等）为键，其 JSON 内容可供您的流水线解析或存储，无需猜测。\n\n---\n\n## “技能”只是一个简单的字典\n\n在内部，技能只是一个紧凑的类似 JSON 的对象，包含指令以及可选的函数定义，用于严格验证 LLM 的输出。您可以根据示例数据生成此技能（如上所示），也可以直接创建：\n\n```python\nEvaluateToBuySkill = {\n  \"skill_class\": \"GeneralSkill\",\n  \"system_prompt\": \"评估用户购买我们产品的可能性，返回一个 1 到 100 之间的整数及简短理由。\",\n  \"function_definition\": {\n    \"type\": \"function\",\n    \"function\": {\n      \"name\": \"EvaluateToBuySkill\",\n      \"description\": \"根据用户文本评估其购买特定产品的意愿。\",\n      \"strict\": True,\n      \"parameters\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"likely_to_buy\": {\n            \"type\": \"integer\",\n            \"description\": \"一个 1 到 100 之间的数字，表示用户购买的可能性。\"\n          },\n          \"reason\": {\n            \"type\": \"string\",\n            \"description\": \"解释为何得出该评分的简短原因。\"\n          }\n        },\n        \"required\": [\"likely_to_buy\", \"reason\"],\n        \"additionalProperties\": False\n      }\n    }\n  }\n}\n```\n\n您可以根据需要将此技能加载或保存为 JSON，对其进行版本控制、共享，或将其集成到您的流水线中。FlashLearn 使整个流程——训练、存储、加载和使用此类自定义 LLM 转换——变得简单且统一。\n\n--------------------------------------------------------------------------------\n## 使用预构建技能的单步分类\n经典的分类任务就像调用机器学习估计器上的“fit_predict”一样简单：\n\n```python\nimport os\nfrom openai import OpenAI\nfrom flashlearn.skills.classification import ClassificationSkill\n\nos.environ[\"OPENAI_API_KEY\"] = \"YOUR_API_KEY\"\ndata = [{\"message\": \"我的退款在哪里？\"}, {\"message\": \"我的产品被损坏了！\"}]\n\nskill = ClassificationSkill(\n    model_name=\"gpt-4o-mini\",\n    client=OpenAI(),\n    categories=[\"billing\",\"product issue\"],\n    system_prompt=\"对请求进行分类。\"\n)\n\ntasks = skill.create_tasks(data)\nprint(skill.run_tasks_in_parallel(tasks))\n```\n---\n\n## 高吞吐量\n在本地机器上，您可以在 60 秒内处理多达 999 个任务。如需更高负载或企业级需求，请联系我们获取企业解决方案。\n[![企业版演示](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FEnterprise%20Edition%20Demo-Click%20Here-blue)](https:\u002F\u002Fcalendly.com\u002Fflashlearn\u002Fenterprise-demo)\n\n```text\nProcessing tasks in parallel: 100%|██████████| 999\u002F999 [01:00\u003C00:00, 16.38 it\u002Fs, In total: 368969, Out total: 17288]\nINFO:ParallelProcessor:All tasks complete. 999 succeeded, 0 failed.\n```\n---\n\n## **并行执行**：\n\n`run_tasks_in_parallel` 会组织对 LLM 的并发请求。\n\n## **成本估算**\n快速预览您的令牌使用情况：\n  ```python\n  cost_estimate = skill.estimate_tasks_cost(tasks)\n  print(\"预计成本:\", cost_estimate)\n  ```\n---\n\n## 加载技能\n\n以下是该库如何处理喜剧性改写的方式：\n\n```python\nfrom flashlearn.skills import GeneralSkill\nfrom flashlearn.skills.toolkit import HumorizeText\n\n\ndef main():\n  data = [{\"original_text\": \"我们进度落后了。\"}]\n  skill = GeneralSkill.load_skill(HumorizeText)\n  tasks = skill.create_tasks(data)\n  results = skill.run_tasks_in_parallel(tasks)\n  print(results)\n```\n\n您将看到如下输出：\n```json\n{\n  \"0\": {\n    \"comedic_version\": \"你这句话的爆笑解读……\"\n  }\n}\n```\n\n所有内容均为结构良好的 JSON，适合进一步分析。\n\n---\n\n## 贡献与社区\n\n- 采用 MIT 许可证。  \n- [Fork 我们](flashlearn\u002F)以添加新技能、修复错误或创建新示例。  \n- 我们致力于让所有初创公司都能轻松使用强大的 LLM 工作流。  \n- 所有代码的测试覆盖率至少需达到 **95%**\n- 探索 [examples 文件夹](examples\u002F)以了解更高级的使用模式。\n\n---\n\n## 许可证\n\n**MIT 许可证**。  \n可用于商业产品和个人项目。\n\n---\n\n## “Hello World” 示例\n\n### 图像分类\n\n```python\nimport os\nfrom openai import OpenAI\nfrom flashlearn.skills.classification import ClassificationSkill\nfrom flashlearn.utils import cats_and_dogs\n\ndef main():\n    # os.environ[\"OPENAI_API_KEY\"] = 'YOUR API KEY'\n    data = cats_and_dogs(sample=6)\n\n    skill = ClassificationSkill(\n        model_name=\"gpt-4o-mini\",\n        client=OpenAI(),\n        categories=[\"cat\", \"dog\"],\n        max_categories=1,\n        system_prompt=\"请分类图片中的内容。\"\n    )\n\n    column_modalities = {\"image_base64\": \"image_base64\"}\n    tasks = skill.create_tasks(data, column_modalities=column_modalities)\n    results = skill.run_tasks_in_parallel(tasks)\n    print(results)\n\n    # 保存技能定义以便重复使用\n    skill.save(\"MyCustomSkillIMG.json\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### 文本分类\n\n```python\nimport json\nimport os\nfrom openai import OpenAI\nfrom flashlearn.skills.classification import ClassificationSkill\nfrom flashlearn.utils import imdb_reviews_50k\n\ndef main():\n    # os.environ[\"OPENAI_API_KEY\"] = '你的 API 密钥'\n    reviews = imdb_reviews_50k(sample=100)\n\n    skill = ClassificationSkill(\n        model_name=\"gpt-4o-mini\",\n        client=OpenAI(),\n        categories=[\"positive\", \"negative\"],\n        max_categories=1,\n        system_prompt=\"根据情感对短篇电影评论进行分类。\"\n    )\n\n    # 将每一行转换为基于 JSON 的任务\n    tasks = skill.create_tasks([{'review': x['review']} for x in reviews])\n    results = skill.run_tasks_in_parallel(tasks)\n\n    # 将预测的情感与真实标签进行比较，以计算准确率\n    correct = 0\n    for i, review in enumerate(reviews):\n        predicted = results[str(i)]['categories']\n        reviews[i]['predicted_sentiment'] = predicted\n        if review['sentiment'] == predicted:\n            correct += 1\n\n    print(f'准确率: {round(correct \u002F len(reviews), 2)}')\n\n    # 将最终结果存储为 JSON Lines 格式\n    with open('results.jsonl', 'w') as jsonl_file:\n        for entry in reviews:\n            jsonl_file.write(json.dumps(entry) + '\\n')\n\n    # 保存技能定义\n    skill.save(\"BinaryClassificationSkill.json\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n---\n\n## 结语\n\nFlashLearn 通过在每个步骤强制使用一致的 JSON 输出，使 LLM 工作流更加清晰明了。无论您是运行单个分类任务，还是复杂的多步流程，都可以存储中间结果、轻松调试，并确保数据的可靠性。  \n[![支持与咨询](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F支持%20%26%20咨询-点击此处-brightgreen)](https:\u002F\u002Fcalendly.com\u002Fflashlearn)","# FlashLearn 快速上手指南\n\nFlashLearn 是一个纯 Python 编写的开源库，旨在简化 Agent LLM（大语言模型智能体）在工作流和 ETL 管道中的集成。它支持高达 1000 次\u002F分钟的调用速率，通过紧凑的 JSON 定义来管理任务，适用于数据转换、分类、摘要及多步骤自定义任务。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：推荐 Python 3.8 及以上版本\n*   **前置依赖**：\n    *   `pip` 包管理工具\n    *   已注册的 LLM 服务商 API Key（支持 OpenAI, DeepSeek, Ollama, LiteLLM 等兼容接口）\n*   **环境变量**：建议准备一个 `.env` 文件或直接在代码中配置 API Key。\n\n## 安装步骤\n\n使用 pip 直接安装 FlashLearn：\n\n```bash\npip install flashlearn\n```\n\n安装完成后，请配置您的 API Key。您可以将其添加到 `.env` 文件中：\n\n```bash\nOPENAI_API_KEY=your_api_key_here\n```\n\n或者在代码运行前导出到环境变量中。\n\n## 基本使用\n\nFlashLearn 的核心概念是\"Skill（技能）”。您可以像训练机器学习模型一样“学习”一个新技能，然后将其应用于数据列表。以下是评估用户评论购买意向的完整示例：\n\n### 1. 定义并保存技能 (Learn Skill)\n\n首先，创建一个技能定义。这一步类似于 ML 中的 `fit` 过程，LLM 将根据您的指令学习如何处理数据。\n\n```python\nfrom flashlearn.skills.learn_skill import LearnSkill\nfrom openai import OpenAI\nimport json\n\n# 初始化客户端 (此处以 OpenAI 为例，也可替换为 DeepSeek 或 Ollama)\nclient = OpenAI() \n\n# 实例化学习器\nlearner = LearnSkill(model_name=\"gpt-4o-mini\", client=client)\n\n# 定义任务指令并学习技能\nskill = learner.learn_skill(\n    df=[], # 可选：在此处传入少量样本数据以辅助学习\n    task=(\n        \"Evaluate how likely the user is to buy my product based on the sentiment in their comment, \"\n        \"return an integer 1-100 on key 'likely_to_buy', \"\n        \"and a short explanation on key 'reason'.\"\n    ),\n)\n\n# 将技能保存为 JSON 文件，以便后续重复使用\nskill.save(\"evaluate_buy_comments_skill.json\")\n```\n\n### 2. 加载技能并执行任务 (Run Skill)\n\n技能保存后，您可以随时加载它并批量处理数据。输入数据应为字典列表。\n\n```python\nfrom flashlearn.skills.general_skill import GeneralSkill\nimport json\n\n# 准备输入数据 (列表包含多个字典)\nuser_inputs = [\n    {\"comment_text\": \"I love this product, it's everything I wanted!\"},\n    {\"comment_text\": \"Not impressed... wouldn't consider buying this.\"},\n]\n\n# 加载之前保存的技能定义\nwith open(\"evaluate_buy_comments_skill.json\", \"r\", encoding=\"utf-8\") as file:\n    definition = json.load(file)\n\nskill = GeneralSkill.load_skill(definition)\n\n# 创建任务并并行执行\ntasks = skill.create_tasks(user_inputs)\nresults = skill.run_tasks_in_parallel(tasks)\n\n# 输出结构化结果\nprint(json.dumps(results, indent=2))\n```\n\n### 3. 获取结果\n\n执行完成后，您将得到标准的 JSON 格式结果，键名对应输入列表的索引：\n\n```json\n{\n  \"0\": {\n    \"likely_to_buy\": 90,\n    \"reason\": \"Comment shows strong enthusiasm and positive sentiment.\"\n  },\n  \"1\": {\n    \"likely_to_buy\": 25,\n    \"reason\": \"Expressed disappointment and reluctance to purchase.\"\n  }\n}\n```\n\n### 进阶提示：切换模型提供商\n\nFlashLearn 原生支持多种兼容 OpenAI 接口的模型。只需更改 `client` 初始化参数即可：\n\n*   **DeepSeek**:\n    ```python\n    deep_seek = OpenAI(api_key='YOUR_DEEPSEEK_KEY', base_url=\"https:\u002F\u002Fapi.deepseek.com\")\n    ```\n*   **Ollama (本地部署)**:\n    ```python\n    ollama = OpenAI(base_url='http:\u002F\u002Flocalhost:11434\u002Fv1', api_key='ollama')\n    ```\n*   **LiteLLM**:\n    ```python\n    from flashlearn.utils import FlashLiteLLMClient\n    lite_llm = FlashLiteLLMClient()\n    ```\n\n通过以上步骤，您即可在几分钟内将 LLM 能力集成到您的数据处理管道中。","某电商运营团队需要每天从社交媒体抓取数千条用户评论，快速筛选出高购买意向的潜在客户并生成分析报告。\n\n### 没有 FlashLearn 时\n- **开发门槛高**：每次调整分析逻辑（如增加“价格敏感度”维度）都需要重写复杂的 Prompt 工程和 API 调用代码，无法像传统机器学习库那样灵活迭代。\n- **并发处理难**：面对海量评论数据，手动编写异步并发逻辑极易出错，导致处理速度缓慢，往往需要数小时才能完成当日数据清洗。\n- **结果非结构化**：大模型返回的文本格式杂乱，后续需要编写大量正则表达式进行解析，一旦模型输出稍有偏差，整个下游报表流程就会崩溃。\n- **流程不透明**：业务逻辑硬编码在脚本中，缺乏统一的标准定义，新成员难以理解或维护现有的分析管道。\n\n### 使用 FlashLearn 后\n- **技能复用像调包**：通过 `learn_skill` 定义一次“购买意向评估”逻辑并保存为 JSON，后续即可像调用 `fit\u002Fpredict` 一样随时加载复用，修改策略只需更新配置文件。\n- **内置高并发加速**：直接利用内置的并发支持，轻松实现每分钟上千次调用，将原本数小时的数据处理任务压缩至几分钟内完成。\n- **原生结构化输出**：自动强制模型返回标准的 JSON 格式（如 `likely_to_buy` 分数和 `reason` 原因），无需额外解析代码，直接对接数据库或 BI 工具。\n- **流程清晰可维护**：每个分析步骤都有紧凑的 JSON 定义，整个 ETL 管道逻辑一目了然，极大降低了协作和维护成本。\n\nFlashLearn 让开发者能以标准机器学习工作流的方式，低成本、高效率地将大模型能力融入真实业务管道。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPravko-Solutions_FlashLearn_84bf9ab2.png","Pravko-Solutions","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FPravko-Solutions_c1e19245.png",null,"https:\u002F\u002Fgithub.com\u002FPravko-Solutions",[80],{"name":81,"color":82,"percentage":83},"Python","#3572A5",100,608,37,"2026-03-26T15:09:06","MIT","Linux, macOS, Windows","未说明 (基于云端 API 调用，本地无需 GPU)","未说明",{"notes":92,"python":93,"dependencies":94},"该工具主要作为编排层调用外部 LLM API（如 OpenAI, DeepSeek, Ollama 等），而非在本地运行大型模型。因此没有特定的 GPU 或大内存需求。需配置对应服务商的 API Key 到 .env 文件。若使用本地 Ollama，需自行确保 Ollama 服务运行正常。支持高并发处理（最高 1000 次调用\u002F分钟）。","未说明 (标识为 Pure Python)",[95,96,97],"flashlearn","openai","litellm",[13,15,14,26,51],[100,101,102,103,104,105,106,107,108],"ai","ai-agents","concurrency","llm","llm-agent","python","agentic-ai-development","ai-agents-framework","etl-pipeline","2026-03-27T02:49:30.150509","2026-04-06T09:52:01.724636",[],[]]