Bug描述
在运行GithubReader MVP时,出现了一个关键错误。此外,demo需要更新以利用github客户端。
版本
0.10.20
重现步骤
# Example gihub repo reader
# %pip install llama-index-readers-github llama-index nest_asyncio httpx
# %env OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# %env GITHUB_TOKEN=github_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import nest_asyncio
nest_asyncio.apply()
from llama_index.core import VectorStoreIndex
from llama_index.readers.github import GithubRepositoryReader
from llama_index.readers.github.repository.github_client import GithubClient
import os
owner = "jerryjliu"
repo = "llama_index"
branch = "main"
github_client = GithubClient(github_token=os.environ["GITHUB_TOKEN"], verbose=True)
reader = GithubRepositoryReader(github_client=github_client, repo="repo",owner="owner")
reader.load_data(branch="branch") # throws
相关日志/回溯
Traceback (most recent call last):
File "/Users/michael.berk/dev/mlflow/llama_index/testing/github_reader.py", line 123, in <module>
load_data_from_branch()
File "/Users/michael.berk/dev/mlflow/llama_index/testing/github_reader.py", line 72, in wrapper
func(*args, **kwargs)
File "/Users/michael.berk/dev/mlflow/llama_index/testing/github_reader.py", line 117, in load_data_from_branch
documents = reader1.load_data(branch="main")
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/llama_index/readers/github/repository/base.py", line 299, in load_data
return self._load_data_from_branch(branch)
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/llama_index/readers/github/repository/base.py", line 259, in _load_data_from_branch
branch_data: GitBranchResponseModel = self._loop.run_until_complete(
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/nest_asyncio.py", line 98, in run_until_complete
return f.result()
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/asyncio/futures.py", line 201, in result
raise self._exception.with_traceback(self._exception_tb)
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/asyncio/tasks.py", line 232, in __step
result = coro.send(None)
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/llama_index/readers/github/repository/github_client.py", line 361, in get_branch
return GitBranchResponseModel.from_json(
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/dataclasses_json/api.py", line 63, in from_json
return cls.from_dict(kvs, infer_missing=infer_missing)
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/dataclasses_json/api.py", line 70, in from_dict
return _decode_dataclass(cls, kvs, infer_missing)
File "/Users/michael.berk/opt/anaconda3/envs/1-dev/lib/python3.10/site-packages/dataclasses_json/core.py", line 172, in _decode_dataclass
field_value = kvs[field.name]
KeyError: 'commit'
详情
- dataclasses-json版本:0.6.4
- 这也会失败:
llama_index/llama-index-integrations/readers/llama-index-readers-github/llama_index/readers/github/repository/base.py
第537行 5c53f41
| | importtime |
8条答案
按热度按时间kxkpmulp1#
嘿 @michael-berk,很高兴再次看到你深入研究LlamaIndex!希望你已经准备好迎接另一个编程冒险 🚀
感谢你报告这个问题。看起来这个错误与一个KeyError有关,键为'commit'。这种错误通常发生在程序尝试访问一个不存在的字典键时。在这种情况下,程序似乎试图从GitHub API的JSON响应中访问'commit'键,但它不存在。
根据你提供的回溯信息,错误是在
GitBranchResponseModel
类的from_json
方法中引发的。这个方法试图从GitHub API的JSON响应中创建一个GitBranchResponseModel
示例,但由于响应中没有'commit'键而失败。这个问题可能是由于GitHub API响应结构的变化或用于身份验证的Personal Access Token(PAT)的问题导致的。在LlamaIndex仓库之前报告过类似的问题( KeyError: 'commit' when loading data from GitHub repository using branch name )。在那起问题中,用户发现通过创建具有适当授权的新PAT来解决问题。
至于更新演示以利用GitHub客户端,你可以将硬编码的字符串 "repo"、"owner" 和 "branch" 分别替换为变量
repo
、owner
和branch
。以下是如何做到这一点的方法:这将确保
GithubRepositoryReader
使用正确的仓库所有者和名称初始化,并使用正确的分支名调用load_data
方法。我希望这有所帮助!如果你有任何其他问题或需要进一步澄清,请随时提问。
来源
关于Dosu
此响应旨在节省您的时间并提供帮助。它不是精确解决方案,而是您自己研究的起点。
帮助我变得更有用!如果这有帮助请留下一个👍,如果无关请留下一个👎。
如果你想继续对话,请以@dosu-bot开头回复。
zpjtge222#
如果你将repo更改为
run-llama
而不是jerryliu
,它可以正常工作,否则你会得到一个301 response, moved
。zvms9eto3#
我遇到了相同的错误。我将所有者更改为
run-llama
,更新了llama-index到版本0.10.22,尝试读取langchain仓库,那个可以正常工作。我在两个仓库中使用了相同的设置。我尝试了一些其他仓库,结果参差不齐。对于一些仓库,它可以正常工作,而对于其他仓库,我会遇到这个错误。2nbm6dog4#
在这里也是一样。我得到了
KeyError: 'commit'
和KeyError: 'url'
,它们来自不同的仓库。xggvc2p65#
同样的错误在这里
KeyError: 'url'
mutmk8jj6#
对我来说也是同样的错误。
KeyError: 'url'
。函数在这个点失败了(在llama_index/readers/github/repository/github_client.py)
:错误是在
GitTreeResponseModel.from_json(response)
抛出的。看起来原因是我试图摄取的仓库中有子模块,这会创建没有url
属性的树项。我通过使用以下实现来绕过这个问题:
如果有人想要修复这个函数,那就太好了!
ulmd4ohb7#
@david1542 这个方法对我有效,但完整的修复需要使用
import json
并改用self.request
而不是self._github_client.request
。修复发生在 github_client.py 文件的大约第 404 行。
感谢你的努力!
jdzmm42g8#
在github_client.py的第364行附近,出现了一个类似的问题。它只影响了我尝试拉取的部分仓库。
经过一番调试后,我最终选择克隆仓库并使用简单的目录读取器。我不知道这是否是GitHub API的稳定性导致的问题,还是其他原因,但我会继续前进。