from typing import AsyncIterable, Union
from arkitect.core.component.llm import BaseChatLanguageModel
from arkitect.core.component.llm.model import (
from arkitect.core.component.tool import LinkReader, ArkToolResponse
from arkitect.telemetry.trace import task
# 替换为您的推理接入点 https://ark.volcengine.com/region:cn-beijing/docs/ark/online-inference-standard#1739de09
endpoint_id = "<YOUR_ENDPOINT_ID>"
def prepare_prompt(link_resp: ArkToolResponse) -> str:
prompt = "以下内容为用户输入网页及相关内容:"
for url_data in link_resp.data.get("ark_web_data_list", []):
prompt += f"网页链接:{url_data.get('url', '')}\\n网页Title:{url_data.get('title', '')}\\n网页内容:{url_data.get('content', '')}\\n\\n"
prompt += "请总结并输出以上网页内容"
async def default_model_calling(
request: ArkChatRequest,
) -> AsyncIterable[Union[ArkChatCompletionChunk, ArkChatResponse]]:
parameters = ArkChatParameters(**request.__dict__)
llm = BaseChatLanguageModel(
endpoint_id=endpoint_id,
messages=request.messages,
async for resp in llm.astream():
async def link_reader(url: str) -> AsyncIterable[Response]:
link_resp: ArkToolResponse = await LinkReader().executor(parameters={"url_list":[url]})
prompt = prepare_prompt(link_resp)
request = ArkChatRequest(
# 替换模型为您需要使用的模型,https://ark.volcengine.com/region:cn-beijing/docs/ark/model-list
model="doubao-seed-2-1-pro-260628",
messages=[{"role": "user", "content": prompt}],
async for resp in default_model_calling(request):
print(resp.choices[0].delta.content, end="", flush=True)
if __name__ == "__main__":
url = "https://www.toutiao.com/"
asyncio.run(link_reader(url))