XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Delete g4f/Provider/ReplicateImage.py

e37e0d51
kqlio67 <166700875+kqlio67@users.noreply.github.com>
提交于

代码差异

1 个文件 +0 -98
Deleted g4f/Provider/ReplicateImage.py +0 -98
@@ -1,98 +0,0 @@
1 from __future__ import annotations
2
3 import random
4 import asyncio
5
6 from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
7 from ..typing import AsyncResult, Messages
8 from ..requests import StreamSession, raise_for_status
9 from ..image import ImageResponse
10 from ..errors import ResponseError
11
12 class ReplicateImage(AsyncGeneratorProvider, ProviderModelMixin):
13 url = "https://replicate.com"
14 parent = "Replicate"
15 working = True
16 default_model = 'stability-ai/sdxl'
17 default_versions = [
18 "39ed52f2a78e934b3ba6e2a89f5b1c712de7dfea535525255b1aa35c5565e08b",
19 "2b017d9b67edd2ee1401238df49d75da53c523f36e363881e057f5dc3ed3c5b2"
20 ]
21 image_models = [default_model]
22
23 @classmethod
24 async def create_async_generator(
25 cls,
26 model: str,
27 messages: Messages,
28 **kwargs
29 ) -> AsyncResult:
30 yield await cls.create_async(messages[-1]["content"], model, **kwargs)
31
32 @classmethod
33 async def create_async(
34 cls,
35 prompt: str,
36 model: str,
37 api_key: str = None,
38 proxy: str = None,
39 timeout: int = 180,
40 version: str = None,
41 extra_data: dict = {},
42 **kwargs
43 ) -> ImageResponse:
44 headers = {
45 'Accept-Encoding': 'gzip, deflate, br',
46 'Accept-Language': 'en-US',
47 'Connection': 'keep-alive',
48 'Origin': cls.url,
49 'Referer': f'{cls.url}/',
50 'Sec-Fetch-Dest': 'empty',
51 'Sec-Fetch-Mode': 'cors',
52 'Sec-Fetch-Site': 'same-site',
53 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
54 'sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
55 'sec-ch-ua-mobile': '?0',
56 'sec-ch-ua-platform': '"macOS"',
57 }
58 if version is None:
59 version = random.choice(cls.default_versions)
60 if api_key is not None:
61 headers["Authorization"] = f"Bearer {api_key}"
62 async with StreamSession(
63 proxies={"all": proxy},
64 headers=headers,
65 timeout=timeout
66 ) as session:
67 data = {
68 "input": {
69 "prompt": prompt,
70 **extra_data
71 },
72 "version": version
73 }
74 if api_key is None:
75 data["model"] = cls.get_model(model)
76 url = "https://homepage.replicate.com/api/prediction"
77 else:
78 url = "https://api.replicate.com/v1/predictions"
79 async with session.post(url, json=data) as response:
80 await raise_for_status(response)
81 result = await response.json()
82 if "id" not in result:
83 raise ResponseError(f"Invalid response: {result}")
84 while True:
85 if api_key is None:
86 url = f"https://homepage.replicate.com/api/poll?id={result['id']}"
87 else:
88 url = f"https://api.replicate.com/v1/predictions/{result['id']}"
89 async with session.get(url) as response:
90 await raise_for_status(response)
91 result = await response.json()
92 if "status" not in result:
93 raise ResponseError(f"Invalid response: {result}")
94 if result["status"] == "succeeded":
95 images = result['output']
96 images = images[0] if len(images) == 1 else images
97 return ImageResponse(images, prompt)
98 await asyncio.sleep(0.5)