[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-eyurtsev--kor":3,"tool-eyurtsev--kor":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":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":83,"owner_website":84,"owner_url":85,"languages":86,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":23,"env_os":95,"env_gpu":95,"env_ram":95,"env_deps":96,"category_tags":104,"github_topics":105,"view_count":10,"oss_zip_url":82,"oss_zip_packed_at":82,"status":16,"created_at":111,"updated_at":112,"faqs":113,"releases":144},943,"eyurtsev\u002Fkor","kor","LLM(😽) ","kor 是一个帮助从文本中提取结构化数据的开源工具，主要面向开发者和研究人员。它通过定义数据模式和提供示例，生成提示发送给大语言模型（LLM），并解析输出结果，从而实现信息提取的功能。\n\n在实际应用中，许多场景需要从非结构化文本中提取有用的信息，比如从用户输入中识别关键实体或意图。然而，并非所有语言模型都支持现代工具调用或 JSON 模式，这就限制了某些功能的实现。kor 的出现解决了这一问题，特别适合那些使用较旧版本 LLM 或不支持工具调用接口的模型。它采用基于提示和解析的方法，兼容几乎所有主流语言模型，为用户提供了一种灵活且通用的解决方案。\n\nkor 的独特之处在于其对模式定义和参考示例的重视，提取质量很大程度上取决于这些输入的设计。此外，它与 LangChain 框架深度集成，方便开发者快速构建复杂的应用。对于使用 Pydantic 进行数据验证的用户，kor 也提供了良好的支持，兼容 v1 和 v2 版本。\n\n如果你是熟悉 Python 的开发者，或者正在研究如何高效利用大语言模型进行信息提取，kor 是一个值得尝试的工具。它的文档详尽，社区活跃，能够帮助你快速上手并解决实际","kor 是一个帮助从文本中提取结构化数据的开源工具，主要面向开发者和研究人员。它通过定义数据模式和提供示例，生成提示发送给大语言模型（LLM），并解析输出结果，从而实现信息提取的功能。\n\n在实际应用中，许多场景需要从非结构化文本中提取有用的信息，比如从用户输入中识别关键实体或意图。然而，并非所有语言模型都支持现代工具调用或 JSON 模式，这就限制了某些功能的实现。kor 的出现解决了这一问题，特别适合那些使用较旧版本 LLM 或不支持工具调用接口的模型。它采用基于提示和解析的方法，兼容几乎所有主流语言模型，为用户提供了一种灵活且通用的解决方案。\n\nkor 的独特之处在于其对模式定义和参考示例的重视，提取质量很大程度上取决于这些输入的设计。此外，它与 LangChain 框架深度集成，方便开发者快速构建复杂的应用。对于使用 Pydantic 进行数据验证的用户，kor 也提供了良好的支持，兼容 v1 和 v2 版本。\n\n如果你是熟悉 Python 的开发者，或者正在研究如何高效利用大语言模型进行信息提取，kor 是一个值得尝试的工具。它的文档详尽，社区活跃，能够帮助你快速上手并解决实际问题。","[![Unit Tests](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Ftest.yml\u002Fbadge.svg?branch=main&event=push)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Ftest.yml)\n[![Test Docs](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Fdoc_test.yaml\u002Fbadge.svg?branch=main&event=push)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Fdoc_test.yaml)\n[![Release Notes](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Feyurtsev\u002Fkor)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Freleases)\n[![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feyurtsev_kor_readme_2efa0c798ac9.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fkor)\n[![Open Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-raw\u002Feyurtsev\u002Fkor)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues)\n[![](https:\u002F\u002Fdcbadge.vercel.app\u002Fapi\u002Fserver\u002F6adMQxSpJS?compact=true&style=flat)](https:\u002F\u002Fdiscord.com\u002Fchannels\u002F1038097195422978059\u002F1170024642245832774)\n\n> [!WARNING]\n> If you're using a chat model that supports a tool calling API, you should probably be using the chat models' tool calling API instead of Kor!\n>\n> Kor is best suited for old style LLMs that did not have a chat interface and did not support tool calling.\n> \n> Read the [tool calling guide](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fconcepts\u002Ftool_calling\u002F) in LangChain for more details.\n>\n> Please refer to the [chat model integration table](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fintegrations\u002Fchat\u002F#featured-providers) for a list of chat models that support native tool calling.\n\n\n# Kor\n\nThis is a half-baked prototype that \"helps\" you extract structured data from text using LLMs 🧩.\n\nSpecify the schema of what should be extracted and provide some examples.\n\nKor will generate a prompt, send it to the specified LLM and parse out the\noutput.\n\nYou might even get results back.\n\nSo yes – it’s just another wrapper on top of LLMs with its own flavor of abstractions. 😸\n\nSee [documentation](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002F).\n\nIntegrated with the [LangChain framework 😽💗 🦜🔗](https:\u002F\u002Fpython.langchain.com\u002Fen\u002Flatest\u002Findex.html).\n\n## Kor vs. LangChain\n\nThere are 3 different approaches for extracting information using LLMs: \n\n1. [prompt based\u002Fparsing](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002Fhow_to\u002Fparse)\n2. [function\u002Ftool calling](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002Fquickstart)\n3. JSON mode\n\nPlease see the LangChain [extraction use case docs](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002F) for an overview.\n\nKor has a pretty good implementation of the **parsing** approach. The approach works with all good-enough LLMs regardless\nof whether they support function\u002Ftool calling or JSON modes.\n\nExtraction quality is principally driven by providing good reference examples and good schema documentation.\n\nPlease see guidelines [here](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002Fguidelines) and [here](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fguidelines.html).\n\n## Version 1.0.0 Release\n\n* `kor` compatible with both pydantic v2 and v1.\n* pydantic v2 had significant breaking changes w\u002F respect to v1, `kor` major\n  version bump was used as a precaution.\n\n\nMain things to watch out for:\n\n1. Use a `default` value for any Optional fields if using pydantic v2 for validation.\n\n```python\nclass MusicRequest(BaseModel):\n    song: Optional[List[str]] = Field(\n        default=None,\n        description=\"The song(s) that the user would like to be played.\"\n    )\n```\n\n2. Kor schema is typed checked using pydantic. Pydantic v2 is stricter, and may\n   catch issues that were hiding in existing user code that was using the `kor`\n   library.\n\n3. Serialization has not yet been implemented with pydantic v2.\n\n\n## Kor style schema\n\n```python\nfrom langchain.chat_models import ChatOpenAI\nfrom kor import create_extraction_chain, Object, Text\n\nllm = ChatOpenAI(\n    model_name=\"gpt-3.5-turbo\",\n    temperature=0,\n    max_tokens=2000,\n    model_kwargs = {\n        'frequency_penalty':0,\n        'presence_penalty':0,\n        'top_p':1.0\n    }\n)\n\nschema = Object(\n    id=\"player\",\n    description=(\n        \"User is controlling a music player to select songs, pause or start them or play\"\n        \" music by a particular artist.\"\n    ),\n    attributes=[\n        Text(\n            id=\"song\",\n            description=\"User wants to play this song\",\n            examples=[],\n            many=True,\n        ),\n        Text(\n            id=\"album\",\n            description=\"User wants to play this album\",\n            examples=[],\n            many=True,\n        ),\n        Text(\n            id=\"artist\",\n            description=\"Music by the given artist\",\n            examples=[(\"Songs by paul simon\", \"paul simon\")],\n            many=True,\n        ),\n        Text(\n            id=\"action\",\n            description=\"Action to take one of: `play`, `stop`, `next`, `previous`.\",\n            examples=[\n                (\"Please stop the music\", \"stop\"),\n                (\"play something\", \"play\"),\n                (\"play a song\", \"play\"),\n                (\"next song\", \"next\"),\n            ],\n        ),\n    ],\n    many=False,\n)\n\nchain = create_extraction_chain(llm, schema, encoder_or_encoder_class='json')\nchain.invoke(\"play songs by paul simon and led zeppelin and the doors\")['data']\n```\n\n```python\n{'player': {'artist': ['paul simon', 'led zeppelin', 'the doors']}}\n```\n\n## Pydantic style schema\n\n* See documentation here [pydantic](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fvalidation.html).\n\n```python \nclass Action(enum.Enum):\n    play = \"play\"\n    stop = \"stop\"\n    previous = \"previous\"\n    next_ = \"next\"\n\n\nclass MusicRequest(BaseModel):\n    song: Optional[List[str]] = Field(\n        default=None,\n        description=\"The song(s) that the user would like to be played.\"\n    )\n    album: Optional[List[str]] = Field(\n        default=None,\n        description=\"The album(s) that the user would like to be played.\"\n    )\n    artist: Optional[List[str]] = Field(\n        default=None,\n        description=\"The artist(s) whose music the user would like to hear.\",\n        examples=[(\"Songs by paul simon\", \"paul simon\")],\n    )\n    action: Optional[Action] = Field(\n        default=None,\n        description=\"The action that should be taken; one of `play`, `stop`, `next`, `previous`\",\n        examples=[\n            (\"Please stop the music\", \"stop\"),\n            (\"play something\", \"play\"),\n            (\"play a song\", \"play\"),\n            (\"next song\", \"next\"),\n        ],\n    )\n    \nschema, validator = from_pydantic(MusicRequest)   \nchain = create_extraction_chain(\n    llm, schema, encoder_or_encoder_class=\"json\", validator=validator\n)\nchain.invoke(\"stop the music now\")[\"validated_data\"]\n```\n\n```python\nMusicRequest(song=None, album=None, artist=None, action=\u003CAction.stop: 'stop'>)\n```\n\n\n\n## Compatibility\n\n`Kor` is tested against python 3.8, 3.9, 3.10, 3.11.\n\n## Installation\n\n```sh\npip install kor\n```\n\n## 💡 Ideas\n\nIdeas of some things that could be done with Kor.\n\n* Extract data from text that matches an extraction schema.\n* Power an AI assistant with skills by precisely understanding a user request.\n* Provide natural language access to an existing API.\n\n## 🚧 Prototype\n\nPrototype! So the API is not expected to be stable!\n\n##  ✨ What does Kor excel at?  🌟\n\n* Making mistakes! Plenty of them!\n* Slow! It uses large prompts with examples, and works best with the larger slower LLMs.\n* Crashing for long enough pieces of text! Context length window could become\n  limiting when working with large forms or long text inputs.\n\nThe expectation is that as LLMs improve some of these issues will be mitigated.\n\n## Limitations\n\nKor has no limitations. (Just kidding.)\n\nTake a look at the section above and at the compatibility section.\n\n## Got Ideas?\n\nOpen an issue, and let's discuss!\n\n## 🎶 Why the name?\n\nFast to type and sufficiently unique.\n\n## Contributing\n\nIf you have any ideas or feature requests, please open an issue and share!\n\nSee [CONTRIBUTING.md](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fblob\u002Fmain\u002FCONTRIBUTING.md) for more information.\n\n## Other packages\n\nProbabilistically speaking this package is unlikely to work for your use case.\n\nSo here are some great alternatives:\n\n* [Promptify](https:\u002F\u002Fgithub.com\u002Fpromptslab\u002FPromptify)\n* [MiniChain](https:\u002F\u002Fsrush.github.io\u002FMiniChain\u002Fexamples\u002Fstats\u002F)\n","[![单元测试](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Ftest.yml\u002Fbadge.svg?branch=main&event=push)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Ftest.yml)\n[![文档测试](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Fdoc_test.yaml\u002Fbadge.svg?branch=main&event=push)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Factions\u002Fworkflows\u002Fdoc_test.yaml)\n[![发布说明](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Feyurtsev\u002Fkor)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Freleases)\n[![下载量](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feyurtsev_kor_readme_2efa0c798ac9.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fkor)\n[![未解决问题](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-raw\u002Feyurtsev\u002Fkor)](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues)\n[![](https:\u002F\u002Fdcbadge.vercel.app\u002Fapi\u002Fserver\u002F6adMQxSpJS?compact=true&style=flat)](https:\u002F\u002Fdiscord.com\u002Fchannels\u002F1038097195422978059\u002F1170024642245832774)\n\n> [!警告]\n> 如果你使用的聊天模型支持工具调用 API，那么你应该使用聊天模型的工具调用 API 而不是 Kor！\n>\n> Kor 最适合用于那些没有聊天接口且不支持工具调用的老式 LLM（大语言模型）。\n> \n> 有关更多详细信息，请阅读 LangChain 中的 [工具调用指南](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fconcepts\u002Ftool_calling\u002F)。\n>\n> 请参考 [聊天模型集成表](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fintegrations\u002Fchat\u002F#featured-providers)，了解支持原生工具调用的聊天模型列表。\n\n\n# Kor\n\n这是一个半成品原型，它“帮助”你使用 LLM（大语言模型）从文本中提取结构化数据 🧩。\n\n指定需要提取内容的模式，并提供一些示例。\n\nKor 将生成提示，将其发送到指定的 LLM 并解析输出结果。\n\n你甚至可能会得到返回的结果。\n\n所以是的——这只是另一个基于 LLM 的封装，带有其独特的抽象风格。 😸\n\n查看 [文档](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002F)。\n\n与 [LangChain 框架 😽💗 🦜🔗](https:\u002F\u002Fpython.langchain.com\u002Fen\u002Flatest\u002Findex.html) 集成。\n\n## Kor 与 LangChain\n\n使用 LLM 提取信息有三种不同的方法：\n\n1. [基于提示\u002F解析](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002Fhow_to\u002Fparse)\n2. [函数\u002F工具调用](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002Fquickstart)\n3. JSON 模式\n\n请参阅 LangChain 的 [提取用例文档](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002F) 以获取概述。\n\nKor 在 **解析** 方法上有相当不错的实现。该方法适用于所有足够好的 LLM，无论它们是否支持函数\u002F工具调用或 JSON 模式。\n\n提取质量主要取决于提供良好的参考示例和良好的模式文档。\n\n请参阅 [此处](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fuse_cases\u002Fextraction\u002Fguidelines) 和 [此处](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fguidelines.html) 的指南。\n\n## 版本 1.0.0 发布\n\n* `kor` 兼容 pydantic v2 和 v1。\n* pydantic v2 相较于 v1 有重大破坏性更改，因此 `kor` 主版本号进行了提升以作为预防措施。\n\n\n需要注意的主要事项：\n\n1. 如果使用 pydantic v2 进行验证，请为任何可选字段设置一个 `default` 值。\n\n```python\nclass MusicRequest(BaseModel):\n    song: Optional[List[str]] = Field(\n        default=None,\n        description=\"The song(s) that the user would like to be played.\"\n    )\n```\n\n2. Kor 模式使用 pydantic 进行类型检查。Pydantic v2 更加严格，可能会发现隐藏在现有用户代码中的问题，这些代码之前使用了 `kor` 库。\n\n3. 使用 pydantic v2 时尚未实现序列化功能。\n\n\n## Kor 风格模式\n\n```python\nfrom langchain.chat_models import ChatOpenAI\nfrom kor import create_extraction_chain, Object, Text\n\nllm = ChatOpenAI(\n    model_name=\"gpt-3.5-turbo\",\n    temperature=0,\n    max_tokens=2000,\n    model_kwargs = {\n        'frequency_penalty':0,\n        'presence_penalty':0,\n        'top_p':1.0\n    }\n)\n\nschema = Object(\n    id=\"player\",\n    description=(\n        \"User is controlling a music player to select songs, pause or start them or play\"\n        \" music by a particular artist.\"\n    ),\n    attributes=[\n        Text(\n            id=\"song\",\n            description=\"User wants to play this song\",\n            examples=[],\n            many=True,\n        ),\n        Text(\n            id=\"album\",\n            description=\"User wants to play this album\",\n            examples=[],\n            many=True,\n        ),\n        Text(\n            id=\"artist\",\n            description=\"Music by the given artist\",\n            examples=[(\"Songs by paul simon\", \"paul simon\")],\n            many=True,\n        ),\n        Text(\n            id=\"action\",\n            description=\"Action to take one of: `play`, `stop`, `next`, `previous`.\",\n            examples=[\n                (\"Please stop the music\", \"stop\"),\n                (\"play something\", \"play\"),\n                (\"play a song\", \"play\"),\n                (\"next song\", \"next\"),\n            ],\n        ),\n    ],\n    many=False,\n)\n\nchain = create_extraction_chain(llm, schema, encoder_or_encoder_class='json')\nchain.invoke(\"play songs by paul simon and led zeppelin and the doors\")['data']\n```\n\n```python\n{'player': {'artist': ['paul simon', 'led zeppelin', 'the doors']}}\n```\n\n## Pydantic 风格模式\n\n* 查看文档 [pydantic](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fvalidation.html)。\n\n```python \nclass Action(enum.Enum):\n    play = \"play\"\n    stop = \"stop\"\n    previous = \"previous\"\n    next_ = \"next\"\n\n\nclass MusicRequest(BaseModel):\n    song: Optional[List[str]] = Field(\n        default=None,\n        description=\"The song(s) that the user would like to be played.\"\n    )\n    album: Optional[List[str]] = Field(\n        default=None,\n        description=\"The album(s) that the user would like to be played.\"\n    )\n    artist: Optional[List[str]] = Field(\n        default=None,\n        description=\"The artist(s) whose music the user would like to hear.\",\n        examples=[(\"Songs by paul simon\", \"paul simon\")],\n    )\n    action: Optional[Action] = Field(\n        default=None,\n        description=\"The action that should be taken; one of `play`, `stop`, `next`, `previous`\",\n        examples=[\n            (\"Please stop the music\", \"stop\"),\n            (\"play something\", \"play\"),\n            (\"play a song\", \"play\"),\n            (\"next song\", \"next\"),\n        ],\n    )\n    \nschema, validator = from_pydantic(MusicRequest)   \nchain = create_extraction_chain(\n    llm, schema, encoder_or_encoder_class=\"json\", validator=validator\n)\nchain.invoke(\"stop the music now\")[\"validated_data\"]\n```\n\n```python\nMusicRequest(song=None, album=None, artist=None, action=\u003CAction.stop: 'stop'>)\n```\n\n\n\n## 兼容性\n\n`Kor` 已在 Python 3.8、3.9、3.10、3.11 上测试通过。\n\n## 安装\n\n```sh\npip install kor\n```\n\n## 💡 创意\n\n以下是使用 Kor 可以实现的一些创意。\n\n* 从符合提取模式的文本中提取数据。\n* 通过精确理解用户请求，为 AI 助手赋予技能。\n* 为现有 API 提供自然语言访问能力。\n\n## 🚧 原型\n\n原型！因此 API 预计不会稳定！\n\n## ✨ Kor 擅长什么？🌟\n\n* 犯错！很多错误！\n* 缓慢！它使用带有示例的大型提示（prompts），最适合与更大、更慢的 LLMs（大语言模型）一起工作。\n* 在处理较长文本时容易崩溃！当处理大型表单或长文本输入时，上下文长度窗口可能会成为限制。\n\n随着 LLMs 的改进，预计其中一些问题将得到缓解。\n\n## 局限性\n\nKor 没有任何局限性。（开玩笑的。）\n\n请查看上面的部分以及兼容性部分。\n\n## 有想法？\n\n打开一个问题，我们一起讨论！\n\n## 🎶 为什么起这个名字？\n\n快速输入且足够独特。\n\n## 贡献\n\n如果您有任何想法或功能请求，请打开一个问题并分享！\n\n更多信息请参见 [CONTRIBUTING.md](https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)。\n\n## 其他包\n\n从概率上讲，这个包不太可能适用于您的用例。\n\n所以这里有一些很好的替代品：\n\n* [Promptify](https:\u002F\u002Fgithub.com\u002Fpromptslab\u002FPromptify)\n* [MiniChain](https:\u002F\u002Fsrush.github.io\u002FMiniChain\u002Fexamples\u002Fstats\u002F)","# Kor 快速上手指南\n\nKor 是一个用于从文本中提取结构化数据的开源工具，基于大语言模型（LLM）实现。以下是快速上手指南。\n\n---\n\n## 环境准备\n\n### 系统要求\n- Python 版本：3.8, 3.9, 3.10, 3.11\n- 支持的操作系统：Windows、macOS、Linux\n\n### 前置依赖\n- 需要安装 [LangChain](https:\u002F\u002Fpython.langchain.com\u002F) 框架。\n- 推荐使用支持 JSON 模式的 LLM 模型（如 `gpt-3.5-turbo`）。\n\n---\n\n## 安装步骤\n\n运行以下命令安装 Kor：\n\n```sh\npip install kor\n```\n\n如果需要加速安装，可以使用国内镜像源，例如：\n\n```sh\npip install kor -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n---\n\n## 基本使用\n\n以下是一个简单的使用示例，展示如何通过 Kor 提取结构化数据。\n\n### 示例 1：Kor 风格 Schema\n\n```python\nfrom langchain.chat_models import ChatOpenAI\nfrom kor import create_extraction_chain, Object, Text\n\n# 初始化 LLM\nllm = ChatOpenAI(\n    model_name=\"gpt-3.5-turbo\",\n    temperature=0,\n    max_tokens=2000,\n    model_kwargs = {\n        'frequency_penalty':0,\n        'presence_penalty':0,\n        'top_p':1.0\n    }\n)\n\n# 定义 Schema\nschema = Object(\n    id=\"player\",\n    description=(\n        \"用户正在控制音乐播放器以选择歌曲、暂停或开始播放，或者播放特定艺术家的音乐。\"\n    ),\n    attributes=[\n        Text(\n            id=\"song\",\n            description=\"用户想播放的歌曲\",\n            examples=[],\n            many=True,\n        ),\n        Text(\n            id=\"album\",\n            description=\"用户想播放的专辑\",\n            examples=[],\n            many=True,\n        ),\n        Text(\n            id=\"artist\",\n            description=\"用户想听的艺术家\",\n            examples=[(\"播放保罗·西蒙的歌曲\", \"保罗·西蒙\")],\n            many=True,\n        ),\n        Text(\n            id=\"action\",\n            description=\"操作类型：`play`、`stop`、`next`、`previous`。\",\n            examples=[\n                (\"请停止播放音乐\", \"stop\"),\n                (\"播放点东西\", \"play\"),\n                (\"播放一首歌\", \"play\"),\n                (\"下一首\", \"next\"),\n            ],\n        ),\n    ],\n    many=False,\n)\n\n# 创建提取链并调用\nchain = create_extraction_chain(llm, schema, encoder_or_encoder_class='json')\nresult = chain.invoke(\"播放保罗·西蒙、齐柏林飞艇和大门乐队的歌曲\")['data']\nprint(result)\n```\n\n输出结果：\n```python\n{'player': {'artist': ['保罗·西蒙', '齐柏林飞艇', '大门乐队']}}\n```\n\n---\n\n### 示例 2：Pydantic 风格 Schema\n\n```python\nfrom enum import Enum\nfrom typing import List, Optional\nfrom pydantic import BaseModel, Field\nfrom kor import create_extraction_chain, from_pydantic\n\nclass Action(Enum):\n    play = \"play\"\n    stop = \"stop\"\n    previous = \"previous\"\n    next_ = \"next\"\n\nclass MusicRequest(BaseModel):\n    song: Optional[List[str]] = Field(\n        default=None,\n        description=\"用户想播放的歌曲。\"\n    )\n    album: Optional[List[str]] = Field(\n        default=None,\n        description=\"用户想播放的专辑。\"\n    )\n    artist: Optional[List[str]] = Field(\n        default=None,\n        description=\"用户想听的艺术家。\",\n        examples=[(\"播放保罗·西蒙的歌曲\", \"保罗·西蒙\")],\n    )\n    action: Optional[Action] = Field(\n        default=None,\n        description=\"应执行的操作：`play`、`stop`、`next`、`previous`。\",\n        examples=[\n            (\"请停止播放音乐\", \"stop\"),\n            (\"播放点东西\", \"play\"),\n            (\"播放一首歌\", \"play\"),\n            (\"下一首\", \"next\"),\n        ],\n    )\n\n# 转换为 Kor Schema\nschema, validator = from_pydantic(MusicRequest)\n\n# 创建提取链并调用\nchain = create_extraction_chain(\n    llm, schema, encoder_or_encoder_class=\"json\", validator=validator\n)\nresult = chain.invoke(\"现在停止播放音乐\")[\"validated_data\"]\nprint(result)\n```\n\n输出结果：\n```python\nMusicRequest(song=None, album=None, artist=None, action=\u003CAction.stop: 'stop'>)\n```\n\n---\n\n以上是 Kor 的基本使用方法，更多高级功能请参考官方文档：[Kor 文档](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002F)。","一位数据分析师正在处理用户在音乐播放器中的操作日志，需要从非结构化的文本中提取出用户的音乐播放请求（如歌曲名、歌手名等），并将其转化为结构化的数据用于后续分析。\n\n### 没有 kor 时\n- 需要手动编写复杂的正则表达式或规则来解析日志文本，耗时且容易遗漏特殊情况。\n- 提取结果的准确性依赖于规则的完善程度，面对多样化的用户输入，规则维护成本极高。\n- 缺乏统一的框架支持，每次处理新类型的数据都需要重新设计解析逻辑。\n- 结果验证困难，无法快速调整和优化提取逻辑。\n- 难以扩展到其他类似的文本提取任务，代码复用率低。\n\n### 使用 kor 后\n- 只需定义清晰的提取目标（schema）和少量示例，kor 自动生成提示词并与 LLM 交互，大幅减少开发时间。\n- 借助 LLM 的强大能力，能够灵活应对各种用户输入形式，提取结果更加准确可靠。\n- 提供一致的接口和抽象，方便在不同任务间切换，无需重复造轮子。\n- 支持快速迭代和调试，通过调整 schema 或示例即可优化提取效果。\n- 易于扩展到其他场景，例如从客服对话中提取用户问题或从评论中提取情感信息。\n\n总结：kor 让非结构化文本的结构化提取变得简单高效，显著降低了开发复杂度和维护成本。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Feyurtsev_kor_f78f8561.png","eyurtsev","Eugene Yurtsev","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Feyurtsev_e2ab4ce8.jpg","SWE | ML | Chief Data Kitten","@langchain-ai","Boston",null,"veryboldbagel","eyurtsev.github.io","https:\u002F\u002Fgithub.com\u002Feyurtsev",[87],{"name":88,"color":89,"percentage":90},"Python","#3572A5",100,1690,95,"2026-03-19T03:44:45","MIT","未说明",{"notes":97,"python":98,"dependencies":99},"需要安装 kor 库，支持的 Python 版本为 3.8 至 3.11。依赖 LangChain 框架和 Pydantic 数据验证库。运行时可能需要较大的上下文窗口来处理长文本输入。","3.8, 3.9, 3.10, 3.11",[67,100,101,102,103],"langchain","pydantic>=1,\u003C3","enum","typing",[13,26],[106,107,108,109,110],"information-extraction","llm","natural-language","natural-language-processing","natural-language-understanding","2026-03-27T02:49:30.150509","2026-04-06T08:42:05.834557",[114,119,124,129,134,139],{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},4148,"如何限制 `predict_and_parse` 返回的值范围？","可以通过在 `Text` 对象中添加 `valid_values` 参数来实现。例如：`Text(id=\"aspect\", description=\"Aspects mentioned in the review\", valid_values=[\"Flavor\", \"Texture\"])`，这样可以限制返回值为指定范围。此外，也可以使用 Pydantic 的 Enum 或自定义验证逻辑来实现类似功能。","https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F84",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},4149,"为什么运行 `extract_from_documents` 时会出现 `SyntaxError: 'await' outside function` 错误？","此问题可能与 `SeleniumURLLoader` 加载器有关。建议检查 ChromeDriver 的配置是否正确，确保其版本与 Chrome 浏览器匹配。如果问题仍然存在，可以在线搜索相关解决方案。","https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F205",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},4150,"Kor 是否支持 Pydantic v2？","是的，Kor 已经支持 Pydantic v2。在版本 1.0.0 中，已修复了与 Pydantic v2 的兼容性问题，并提供了良好的单元测试覆盖。如果遇到其他问题，可以提交新的 Issue。","https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F206",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},4151,"如何从文件加载 schema？","可以通过将 schema 序列化为 JSON 文件并加载的方式实现。具体实现可以参考 PR #184，该功能已在版本 0.11.0 中发布。","https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F177",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},4152,"为什么对较长的查询解析失败？","这可能是由于示例配置过于复杂或不够明确导致的。建议调整配置，简化示例内容。官方文档中也提供了相关指导：[Guidelines](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fguidelines.html)。","https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F149",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},4153,"为什么在 Object 中添加示例时会报错？","当属性数量为 2 且在 Object 中添加示例时，可能会触发错误。解决方法是不在 Object 中添加示例，而是将示例添加到每个属性中。例如，在 `Text` 中单独定义 `examples`。","https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F130",[145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240],{"id":146,"version":147,"summary_zh":148,"released_at":149},113245,"2.0.0","## What's Changed\r\n* Fix release to use main branch by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F224\r\n* Updating model kwargs usage in documentation by @smwitkowski in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F227\r\n* Bump urllib3 from 2.0.4 to 2.0.7 by @dependabot in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F241\r\n* Bump langchain from 0.0.283 to 0.0.317 by @dependabot in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F242\r\n* Bump langchain from 0.0.317 to 0.0.325 by @dependabot in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F245\r\n* upgrade langchain by @chaimt in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F257\r\n* Version 1.0.1 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F258\r\n* Update README.md by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F271\r\n* Bump langchain from 0.1.4 to 0.1.11 by @dependabot in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F269\r\n* Update README.md by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F272\r\n* Bump langchain-core from 0.1.29 to 0.1.30 by @dependabot in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F273\r\n* Upgrade dependencies by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F287\r\n* re-run notebooks by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F302\r\n* kor: update constraints for min dependencies by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F304\r\n* Release 1.0.2 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F303\r\n* Remove deprecated chain by @Sachin-Bhat in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F306\r\n* Specify type on parser by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F308\r\n* update notebooks by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F309\r\n* Depend only on langchain-core by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F310\r\n* Release 2.0.0 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F311\r\n\r\n## New Contributors\r\n* @smwitkowski made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F227\r\n* @dependabot made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F241\r\n* @chaimt made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F257\r\n* @Sachin-Bhat made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F306\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F1.0.0...2.0.0","2024-07-20T03:16:54",{"id":151,"version":152,"summary_zh":153,"released_at":154},113246,"1.0.0","# Changes\r\n\r\n* `kor` is now compatible with both pydantic v2 and v1\r\n* pydantic v2 had significant breaking changes w\u002F respect to v1, so a major version bump was used in `kor` as a precaution to warn users about potential breaking changes.\r\n\r\nMain things to watch out for when bumping to new pydantic version and new kor:\r\n\r\n1. Use a `default` value for any Optional fields if using pydantic v2 for validation.\r\n\r\n```python\r\nclass MusicRequest(BaseModel):\r\n    song: Optional[List[str]] = Field(\r\n        default=None,\r\n        description=\"The song(s) that the user would like to be played.\"\r\n    )\r\n```\r\n\r\n2. Kor schema is typed checked using pydantic. Pydantic v2 is stricter, and may\r\n   catch issues that were hiding in existing user code that was using the `kor`\r\n   library.\r\n\r\n3. Serialization has not yet been implemented with pydantic v2.\r\n\r\n## Other changes\r\n\r\nnode ids are not longer required to be valid identifiers. This helps when using node ids which are attribute names written in other languages (e.g., chinese).\r\n\r\n## What's Changed\r\n* Update docs to use run by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F197\r\n* update workflow by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F208\r\n* Pydantic v1 and v2 support by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F213\r\n* Fix release workflow by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F214\r\n* Update notebooks by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F215\r\n* Update README for pydantic v2 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F216\r\n* Update workflow to run pydantic compatibility by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F217\r\n* Update poetry lock file by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F218\r\n* Version 1.0.0 release by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F223\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.13.0...1.0.0","2023-09-06T19:13:56",{"id":156,"version":157,"summary_zh":158,"released_at":159},113247,"0.13.0","## What's Changed\r\n\r\n* **BREAKING CHANGE** Use run instead of predict_and_parse by @BorisWilhelms in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F188\r\n\r\nAttaches parser directly to extraction chain, allowing usage of the `run` method and deprecating usage of `predict_and_parse` (and async variants respectively).\r\n\r\n* Release 0.13.0 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F192\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.12.0...0.13.0","2023-07-11T07:46:59",{"id":161,"version":162,"summary_zh":163,"released_at":164},113248,"0.12.0","## What's Changed\r\n* Feature\u002Fschema to json by @BorisWilhelms in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F184\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.11.0...0.12.0","2023-07-06T20:59:20",{"id":166,"version":167,"summary_zh":168,"released_at":169},113249,"0.11.0","## What's Changed\r\n\r\n* Load schema from JSON by @BorisWilhelms in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F178\r\n* fix(docs): typo by @Seb0 in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F167\r\n* Fix typo in apis.ipynb by @eltociear in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F175\r\n\r\n## New Contributors\r\n* @Seb0 made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F167\r\n* @eltociear made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F175\r\n* @BorisWilhelms made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F178\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.10.0...0.11.0","2023-06-27T21:49:27",{"id":171,"version":172,"summary_zh":173,"released_at":174},113250,"0.10.0","## What's Changed\r\n\r\n* Add boolean type by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F165\r\n* Version 0.10.0 by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F166\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.9.2...0.10.0","2023-05-25T15:30:41",{"id":176,"version":177,"summary_zh":178,"released_at":179},113251,"0.9.2","## What's Changed\r\n\r\nFix for JSON encoding when extracting non English text (https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F152)\r\n\r\n* Fix to allow encoding non ascii in JSON by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F153\r\n* Add kor to sys path when generating docs by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F116\r\n* Set default of JSON encoder to ensure_ascii = False by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F154\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.9.1...0.9.2","2023-05-07T19:29:03",{"id":181,"version":182,"summary_zh":183,"released_at":184},113252,"0.9.1","## What's Changed\r\n\r\n* Fix for breaking change in langchain by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F147\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.9.0...0.9.1","2023-05-02T17:10:49",{"id":186,"version":187,"summary_zh":188,"released_at":189},113253,"0.9.0","## What's Changed\r\n\r\nPropagating verbosity flag to allow users to set verbosity on the extraction chain: @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F137\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.8.1...0.9.0","2023-04-24T14:34:20",{"id":191,"version":192,"summary_zh":193,"released_at":194},113254,"0.8.1","## What's Changed\r\n\r\n* Bug fix for object examples: @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F131\r\n\r\nFix for this issue: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fissues\u002F130  -- If the examples that were defined on an object were a list of dicts with each dict containing exactly 2 items, then the list of dicts was incorrectly coerced by pydantic into a dict \r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.8.0...0.8.1","2023-04-20T02:27:33",{"id":196,"version":197,"summary_zh":198,"released_at":199},113255,"0.8.0","## What's Changed\r\n\r\nSupport for extracting from longer documents see documentation: https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fdocument_extraction.html\r\n\r\n* Add simple extraction workflow by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F124\r\n* Add minimal HTML processing by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F123\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.7.0...0.8.0","2023-04-08T13:11:41",{"id":201,"version":202,"summary_zh":203,"released_at":204},113256,"0.7.0","## What's Changed\r\n\r\n\r\n* All the internal schema relies on pydantic for validation! This change may cause your code to crash if you've had typos!\r\n @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F117\r\n\r\n\r\n* Allow customizing the prompt by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F121\r\n\r\n```python\r\nfrom langchain.prompts import PromptTemplate\r\n\r\nDEFAULT_PROMPT_TEMPLATE = PromptTemplate(\r\n    input_variables=[\"format_instructions\", \"type_description\"],\r\n    template=(\r\n        \"Write some stuff here n\\n\"\r\n        \"{type_description}\\n\\n\"\r\n        \"{format_instructions}\"\r\n        \"Suffix heren\\n\"\r\n    ),\r\n)\r\n\r\n\r\nchain = create_extraction_chain(llm, schema, instruction_template=DEFAULT_PROMPT_TEMPLATE)\r\n\r\nprint(chain.prompt.format_prompt(text='hello').to_string())\r\n```\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.6.1...0.7.0","2023-04-06T13:56:17",{"id":206,"version":207,"summary_zh":208,"released_at":209},113257,"0.6.1","## What's Changed\r\n\r\nBug fixes:\r\n\r\n* Apply input formatter to user text, not only examples by @eyurtsev in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F119\r\n\r\n## New Contributors\r\n* @rishabhjain1198 made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F118\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.6.0...0.6.1","2023-04-04T17:58:57",{"id":211,"version":212,"summary_zh":213,"released_at":214},113258,"0.6.0","## What's Changed\r\n\r\n* Visitors accept **kwargs \r\n* Type-descriptors have been changed to be immutable\r\n* Added more documentation\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.5.1...0.6.0","2023-04-03T17:39:34",{"id":216,"version":217,"summary_zh":218,"released_at":219},113259,"0.5.1","## What's Changed\r\n\r\n* Add input formatting argument to [create_extraction_chain](https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fgenerated\u002Fkor.html#kor.create_extraction_chain). This may help make the extraction more robust for text containing a lot of whitespace \u002F multiple paragraphs.\r\n* Added kor.__version__ \r\n* Added more sphinx documentation\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.5.0...0.5.1","2023-04-01T19:52:03",{"id":221,"version":222,"summary_zh":223,"released_at":224},113260,"0.5.0","## What's Changed\r\n\r\n* Added a pydantic adapter (https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F91) which can be used to generate schema and to do validation.\r\n* The adapter handles only a few common primitives for schema.\r\n* Example usage here: https:\u002F\u002Feyurtsev.github.io\u002Fkor\u002Fvalidation.html\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.4.0...0.5.0","2023-03-25T18:49:51",{"id":226,"version":227,"summary_zh":228,"released_at":229},113261,"0.4.0","## What's Changed\r\n\r\n* Integration with Langchain via an LLMChain\r\n* Added support for CSV, JSON encodings\r\n* Swapped default encoding to use CSV (less flexible, but anecdotally more accurate)\r\n* All schema nodes are no longer assumed to be lists by default. Instead the `many` attribute has been set to `False`\r\n* However, due to lack of validation and details of XML encoding, XML encoding will still output everything as lists.\r\n* Renamed type descriptors\r\n\r\n## Breaking Changes\r\n\r\nPublic API for extraction has changed completely to instead expose an LLMChain.\r\n\r\n## New Contributors\r\n* @tomdyson made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F74\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.3.0...0.4.0","2023-03-22T18:56:16",{"id":231,"version":232,"summary_zh":233,"released_at":234},113262,"0.3.0","## What's Changed\r\n\r\n* Integrated with langchain\r\n* Added test coverage for code in preparation for feature work\r\n\r\n### Breaking changes \r\n\r\n* Removed `kor` adapters on top of open AI models, these will be maintained by langchain.\r\n\r\n## New Contributors\r\n* @vbarda made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F26\r\n* @hwchase17 made their first contribution in https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fpull\u002F57\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Feyurtsev\u002Fkor\u002Fcompare\u002F0.2.0...0.3.0","2023-03-15T18:33:13",{"id":236,"version":237,"summary_zh":238,"released_at":239},113263,"0.2.0","Added documentation and cleaned up some old code.\r\nSmall feature set to gauge interest.\r\nCode is hardly tested at the moment.","2023-03-11T15:26:18",{"id":241,"version":242,"summary_zh":243,"released_at":244},113264,"0.0.1","Draft release only available for a few folks. Has some documentation and a somewhat stabilized API.","2023-03-10T16:51:46"]