├── env_ex.txt ├── README.md ├── example ├── example.jsonl ├── example_prepared.jsonl ├── chatgpt.py ├── gpt3(davinci)_finetuning.py ├── gpt3_5(davinci-text-003).py └── gpt3_5(davinci-text-003)_slack.py └── .gitignore /env_ex.txt: -------------------------------------------------------------------------------- 1 | OPENAI_API_KEY=YOUR_KEY 2 | api_host=0.0.0.0 3 | api_port=8088 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # openai-tutorial 예제를 모아놓은 Repo입니다. 2 | 3 | ## 본 repo는 아래 블로그 글에서 다룬 코드를 저장하고 있습니다. 4 | 5 | - OpenAI GPT3.5 활용하기 6 | - https://lsjsj92.tistory.com/655 7 | - OpenAI GPT3.5 fine-tuning 하기 8 | - https://lsjsj92.tistory.com/656 9 | 10 | ## Example list 11 | 1. GPT3.5 기본 활용 방법 12 | - gpt3_5(davinci-text-003).py 13 | 2. GPT3.5 Fine-tuning model 활용 14 | - gpt3(davinci)_finetuning.py 15 | 3. GPT3.5 with Slack 16 | - gpt3_5(davinci-text-003)_slack.py 17 | -------------------------------------------------------------------------------- /example/example.jsonl: -------------------------------------------------------------------------------- 1 | {"prompt": "Feel: Smile \nMsg: 내 이름은 이수진이라고 해. \n ->", "completion": ":) ㅎㅎ 이수진!"} 2 | {"prompt": "Feel: Smile \nMsg: 내 이름은 홍길동이라고 해. \n ->", "completion": ":) ㅎㅎ 홍길동!"} 3 | {"prompt": "Feel: Smile \nMsg: 내 이름은 철수라고 해. \n ->", "completion": ":) ㅎㅎ 철수!"} 4 | {"prompt": "Feel: Smile \nMsg: 내 이름은 오옹이라고 해. \n ->", "completion": ":) ㅎㅎ 오옹!"} 5 | {"prompt": "Feel: Sad \nMsg: 내 이름은 이수진이라고 해. \n ->", "completion": ":( ㅠ_ㅜ 이수진"} 6 | {"prompt": "Feel: Sad \nMsg: 내 이름은 홍길동이라고 해. \n ->", "completion": ":( ㅠ_ㅜ 홍길동"} 7 | {"prompt": "Feel: Sad \nMsg: 내 이름은 철수라고 해. \n ->", "completion": ":( ㅠ_ㅜ 철수"} 8 | {"prompt": "Feel: Sad \nMsg: 내 이름은 오옹이라고 해. \n ->", "completion": ":( ㅠ_ㅜ 오옹"} -------------------------------------------------------------------------------- /example/example_prepared.jsonl: -------------------------------------------------------------------------------- 1 | {"prompt":"Feel: Smile \nMsg: 내 이름은 이수진이라고 해. \n ->","completion":" :) ㅎㅎ 이수진!\n"} 2 | {"prompt":"Feel: Smile \nMsg: 내 이름은 홍길동이라고 해. \n ->","completion":" :) ㅎㅎ 홍길동!\n"} 3 | {"prompt":"Feel: Smile \nMsg: 내 이름은 철수라고 해. \n ->","completion":" :) ㅎㅎ 철수!\n"} 4 | {"prompt":"Feel: Smile \nMsg: 내 이름은 오옹이라고 해. \n ->","completion":" :) ㅎㅎ 오옹!\n"} 5 | {"prompt":"Feel: Sad \nMsg: 내 이름은 이수진이라고 해. \n ->","completion":" :( ㅠ_ㅜ 이수진\n"} 6 | {"prompt":"Feel: Sad \nMsg: 내 이름은 홍길동이라고 해. \n ->","completion":" :( ㅠ_ㅜ 홍길동\n"} 7 | {"prompt":"Feel: Sad \nMsg: 내 이름은 철수라고 해. \n ->","completion":" :( ㅠ_ㅜ 철수\n"} 8 | {"prompt":"Feel: Sad \nMsg: 내 이름은 오옹이라고 해. \n ->","completion":" :( ㅠ_ㅜ 오옹\n"} 9 | -------------------------------------------------------------------------------- /example/chatgpt.py: -------------------------------------------------------------------------------- 1 | import os 2 | import openai 3 | import argparse 4 | from dotenv import load_dotenv 5 | 6 | class OpenAIGpt: 7 | def __init__(self): 8 | load_dotenv() 9 | 10 | def run(self): 11 | openai.api_key = os.getenv("OPENAI_API_KEY") 12 | text = "Hello. nice to meet you" 13 | completion = openai.ChatCompletion.create( 14 | model="gpt-3.5-turbo", 15 | messages=[ 16 | {"role": "system", "content": "You are a helpful assistant that translates English to Korean."}, 17 | {"role": "user", "content": f'Translate the following English text to Korean: "{text}"'} 18 | ] 19 | ) 20 | 21 | print(completion) 22 | print(completion['choices'][0]['message']['content']) 23 | 24 | 25 | if __name__ == '__main__': 26 | openai_gpt = OpenAIGpt() 27 | openai_gpt.run() 28 | -------------------------------------------------------------------------------- /example/gpt3(davinci)_finetuning.py: -------------------------------------------------------------------------------- 1 | import os 2 | import openai 3 | import argparse 4 | from dotenv import load_dotenv 5 | 6 | 7 | class OpenAIGpt: 8 | def __init__(self): 9 | load_dotenv() 10 | 11 | def run(self, args): 12 | question = input("Question : ") 13 | openai.api_key = os.getenv("OPENAI_API_KEY") 14 | response = openai.Completion.create( 15 | #model="text-davinci-003", 16 | model="", 17 | prompt=f"{question}", 18 | temperature=args.temperature, 19 | max_tokens=100, 20 | top_p=1, 21 | frequency_penalty=0.0, 22 | presence_penalty=0.0, 23 | stop=["\n"] 24 | #stop=None 25 | ) 26 | #print(response) 27 | print(response.choices[0].text.strip()) 28 | 29 | 30 | if __name__ == '__main__': 31 | parser = argparse.ArgumentParser() 32 | # python gpt3.py --temperature 0.3 33 | parser.add_argument('--temperature', default=0.3) 34 | 35 | args = parser.parse_args() 36 | openai_gpt = OpenAIGpt() 37 | openai_gpt.run(args) 38 | 39 | -------------------------------------------------------------------------------- /example/gpt3_5(davinci-text-003).py: -------------------------------------------------------------------------------- 1 | import os 2 | import openai 3 | import argparse 4 | from dotenv import load_dotenv 5 | 6 | 7 | class OpenAIGpt: 8 | def __init__(self): 9 | load_dotenv() 10 | 11 | def run(self, args): 12 | body = input("body : ") 13 | question = input("Question : ") 14 | text = f"{body} \n\nQ: {question}\nA:" 15 | openai.api_key = os.getenv("OPENAI_API_KEY") 16 | response = openai.Completion.create( 17 | model="text-davinci-003", 18 | prompt=f"{text}", 19 | temperature=args.temperature, 20 | max_tokens=100, 21 | top_p=1, 22 | frequency_penalty=0.0, 23 | presence_penalty=0.0, 24 | stop=["\n"] 25 | ) 26 | print(response) 27 | print(response.choices[0].text.strip()) 28 | 29 | 30 | if __name__ == '__main__': 31 | parser = argparse.ArgumentParser() 32 | # python gpt3.py --temperature 0.3 33 | parser.add_argument('--temperature', default=0.3) 34 | 35 | args = parser.parse_args() 36 | openai_gpt = OpenAIGpt() 37 | openai_gpt.run(args) 38 | 39 | -------------------------------------------------------------------------------- /example/gpt3_5(davinci-text-003)_slack.py: -------------------------------------------------------------------------------- 1 | 2 | import os 3 | import openai 4 | import argparse 5 | from dotenv import load_dotenv 6 | from slack_sdk import WebClient 7 | from slack_sdk.errors import SlackApiError 8 | 9 | 10 | class OpenAIGpt: 11 | def run(self, msg): 12 | openai.api_key = os.getenv("OPENAI_API_KEY") 13 | response = openai.Completion.create( 14 | model="text-davinci-003", 15 | prompt=f"{msg}.", 16 | temperature=0.3, 17 | max_tokens=512, 18 | top_p=1, 19 | frequency_penalty=0.0, 20 | presence_penalty=0.0, 21 | stop=None 22 | ) 23 | 24 | return response.choices[0].text.strip() 25 | 26 | 27 | load_dotenv() 28 | 29 | client = WebClient(token=f"{os.getenv('slack_bot')}") 30 | channel_id = os.getenv('slack_ch') 31 | 32 | try: 33 | result = client.conversations_history(channel=channel_id) 34 | 35 | conversation_history = result["messages"] 36 | openai_gpt = OpenAIGpt() 37 | ans = openai_gpt.run(conversation_history[0]['text']) 38 | print("conversation_history[0]['text'] : ", conversation_history[0]['text']) 39 | print(ans) 40 | client.chat_postMessage(channel='#alert_msg', text=f"{ans}") 41 | except SlackApiError as e: 42 | print("Error creating conversation: {}".format(e)) 43 | 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /models 2 | data/ 3 | asset/ 4 | 5 | # Created by https://www.toptal.com/developers/gitignore/api/windows,macos,python,visualstudio,visualstudiocode,pycharm,jupyternotebooks,dotenv 6 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows,macos,python,visualstudio,visualstudiocode,pycharm,jupyternotebooks,dotenv 7 | 8 | ### dotenv ### 9 | .env 10 | 11 | ### JupyterNotebooks ### 12 | # gitignore template for Jupyter Notebooks 13 | # website: http://jupyter.org/ 14 | 15 | .ipynb_checkpoints 16 | */.ipynb_checkpoints/* 17 | 18 | # IPython 19 | profile_default/ 20 | ipython_config.py 21 | 22 | # Remove previous ipynb_checkpoints 23 | # git rm -r .ipynb_checkpoints/ 24 | 25 | ### macOS ### 26 | # General 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Icon must end with two \r 32 | Icon 33 | 34 | 35 | # Thumbnails 36 | ._* 37 | 38 | # Files that might appear in the root of a volume 39 | .DocumentRevisions-V100 40 | .fseventsd 41 | .Spotlight-V100 42 | .TemporaryItems 43 | .Trashes 44 | .VolumeIcon.icns 45 | .com.apple.timemachine.donotpresent 46 | 47 | # Directories potentially created on remote AFP share 48 | .AppleDB 49 | .AppleDesktop 50 | Network Trash Folder 51 | Temporary Items 52 | .apdisk 53 | 54 | ### macOS Patch ### 55 | # iCloud generated files 56 | *.icloud 57 | 58 | ### PyCharm ### 59 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 60 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 61 | 62 | # User-specific stuff 63 | .idea/**/workspace.xml 64 | .idea/**/tasks.xml 65 | .idea/**/usage.statistics.xml 66 | .idea/**/dictionaries 67 | .idea/**/shelf 68 | 69 | # AWS User-specific 70 | .idea/**/aws.xml 71 | 72 | # Generated files 73 | .idea/**/contentModel.xml 74 | 75 | # Sensitive or high-churn files 76 | .idea/**/dataSources/ 77 | .idea/**/dataSources.ids 78 | .idea/**/dataSources.local.xml 79 | .idea/**/sqlDataSources.xml 80 | .idea/**/dynamic.xml 81 | .idea/**/uiDesigner.xml 82 | .idea/**/dbnavigator.xml 83 | 84 | # Gradle 85 | .idea/**/gradle.xml 86 | .idea/**/libraries 87 | 88 | # Gradle and Maven with auto-import 89 | # When using Gradle or Maven with auto-import, you should exclude module files, 90 | # since they will be recreated, and may cause churn. Uncomment if using 91 | # auto-import. 92 | # .idea/artifacts 93 | # .idea/compiler.xml 94 | # .idea/jarRepositories.xml 95 | # .idea/modules.xml 96 | # .idea/*.iml 97 | # .idea/modules 98 | # *.iml 99 | # *.ipr 100 | 101 | # CMake 102 | cmake-build-*/ 103 | 104 | # Mongo Explorer plugin 105 | .idea/**/mongoSettings.xml 106 | 107 | # File-based project format 108 | *.iws 109 | 110 | # IntelliJ 111 | out/ 112 | 113 | # mpeltonen/sbt-idea plugin 114 | .idea_modules/ 115 | 116 | # JIRA plugin 117 | atlassian-ide-plugin.xml 118 | 119 | # Cursive Clojure plugin 120 | .idea/replstate.xml 121 | 122 | # SonarLint plugin 123 | .idea/sonarlint/ 124 | 125 | # Crashlytics plugin (for Android Studio and IntelliJ) 126 | com_crashlytics_export_strings.xml 127 | crashlytics.properties 128 | crashlytics-build.properties 129 | fabric.properties 130 | 131 | # Editor-based Rest Client 132 | .idea/httpRequests 133 | 134 | # Android studio 3.1+ serialized cache file 135 | .idea/caches/build_file_checksums.ser 136 | 137 | ### PyCharm Patch ### 138 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 139 | 140 | # *.iml 141 | # modules.xml 142 | # .idea/misc.xml 143 | # *.ipr 144 | 145 | # Sonarlint plugin 146 | # https://plugins.jetbrains.com/plugin/7973-sonarlint 147 | .idea/**/sonarlint/ 148 | 149 | # SonarQube Plugin 150 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin 151 | .idea/**/sonarIssues.xml 152 | 153 | # Markdown Navigator plugin 154 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced 155 | .idea/**/markdown-navigator.xml 156 | .idea/**/markdown-navigator-enh.xml 157 | .idea/**/markdown-navigator/ 158 | 159 | # Cache file creation bug 160 | # See https://youtrack.jetbrains.com/issue/JBR-2257 161 | .idea/$CACHE_FILE$ 162 | 163 | # CodeStream plugin 164 | # https://plugins.jetbrains.com/plugin/12206-codestream 165 | .idea/codestream.xml 166 | 167 | # Azure Toolkit for IntelliJ plugin 168 | # https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij 169 | .idea/**/azureSettings.xml 170 | 171 | ### Python ### 172 | # Byte-compiled / optimized / DLL files 173 | __pycache__/ 174 | *.py[cod] 175 | *$py.class 176 | 177 | # C extensions 178 | *.so 179 | 180 | # Distribution / packaging 181 | .Python 182 | build/ 183 | develop-eggs/ 184 | dist/ 185 | downloads/ 186 | eggs/ 187 | .eggs/ 188 | lib/ 189 | lib64/ 190 | parts/ 191 | sdist/ 192 | var/ 193 | wheels/ 194 | share/python-wheels/ 195 | *.egg-info/ 196 | .installed.cfg 197 | *.egg 198 | MANIFEST 199 | 200 | # PyInstaller 201 | # Usually these files are written by a python script from a template 202 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 203 | *.manifest 204 | *.spec 205 | 206 | # Installer logs 207 | pip-log.txt 208 | pip-delete-this-directory.txt 209 | 210 | # Unit test / coverage reports 211 | htmlcov/ 212 | .tox/ 213 | .nox/ 214 | .coverage 215 | .coverage.* 216 | .cache 217 | nosetests.xml 218 | coverage.xml 219 | *.cover 220 | *.py,cover 221 | .hypothesis/ 222 | .pytest_cache/ 223 | cover/ 224 | 225 | # Translations 226 | *.mo 227 | *.pot 228 | 229 | # Django stuff: 230 | *.log 231 | local_settings.py 232 | db.sqlite3 233 | db.sqlite3-journal 234 | 235 | # Flask stuff: 236 | instance/ 237 | .webassets-cache 238 | 239 | # Scrapy stuff: 240 | .scrapy 241 | 242 | # Sphinx documentation 243 | docs/_build/ 244 | 245 | # PyBuilder 246 | .pybuilder/ 247 | target/ 248 | 249 | # Jupyter Notebook 250 | 251 | # IPython 252 | 253 | # pyenv 254 | # For a library or package, you might want to ignore these files since the code is 255 | # intended to run in multiple environments; otherwise, check them in: 256 | # .python-version 257 | 258 | # pipenv 259 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 260 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 261 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 262 | # install all needed dependencies. 263 | #Pipfile.lock 264 | 265 | # poetry 266 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 267 | # This is especially recommended for binary packages to ensure reproducibility, and is more 268 | # commonly ignored for libraries. 269 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 270 | #poetry.lock 271 | 272 | # pdm 273 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 274 | #pdm.lock 275 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 276 | # in version control. 277 | # https://pdm.fming.dev/#use-with-ide 278 | .pdm.toml 279 | 280 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 281 | __pypackages__/ 282 | 283 | # Celery stuff 284 | celerybeat-schedule 285 | celerybeat.pid 286 | 287 | # SageMath parsed files 288 | *.sage.py 289 | 290 | # Environments 291 | .venv 292 | env/ 293 | venv/ 294 | ENV/ 295 | env.bak/ 296 | venv.bak/ 297 | 298 | # Spyder project settings 299 | .spyderproject 300 | .spyproject 301 | 302 | # Rope project settings 303 | .ropeproject 304 | 305 | # mkdocs documentation 306 | /site 307 | 308 | # mypy 309 | .mypy_cache/ 310 | .dmypy.json 311 | dmypy.json 312 | 313 | # Pyre type checker 314 | .pyre/ 315 | 316 | # pytype static type analyzer 317 | .pytype/ 318 | 319 | # Cython debug symbols 320 | cython_debug/ 321 | 322 | # PyCharm 323 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 324 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 325 | # and can be added to the global gitignore or merged into this file. For a more nuclear 326 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 327 | #.idea/ 328 | 329 | ### Python Patch ### 330 | # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration 331 | poetry.toml 332 | 333 | # ruff 334 | .ruff_cache/ 335 | 336 | ### VisualStudioCode ### 337 | .vscode/* 338 | !.vscode/settings.json 339 | !.vscode/tasks.json 340 | !.vscode/launch.json 341 | !.vscode/extensions.json 342 | !.vscode/*.code-snippets 343 | 344 | # Local History for Visual Studio Code 345 | .history/ 346 | 347 | # Built Visual Studio Code Extensions 348 | *.vsix 349 | 350 | ### VisualStudioCode Patch ### 351 | # Ignore all local history of files 352 | .history 353 | .ionide 354 | 355 | ### Windows ### 356 | # Windows thumbnail cache files 357 | Thumbs.db 358 | Thumbs.db:encryptable 359 | ehthumbs.db 360 | ehthumbs_vista.db 361 | 362 | # Dump file 363 | *.stackdump 364 | 365 | # Folder config file 366 | [Dd]esktop.ini 367 | 368 | # Recycle Bin used on file shares 369 | $RECYCLE.BIN/ 370 | 371 | # Windows Installer files 372 | *.cab 373 | *.msi 374 | *.msix 375 | *.msm 376 | *.msp 377 | 378 | # Windows shortcuts 379 | *.lnk 380 | 381 | ### VisualStudio ### 382 | ## Ignore Visual Studio temporary files, build results, and 383 | ## files generated by popular Visual Studio add-ons. 384 | ## 385 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 386 | 387 | # User-specific files 388 | *.rsuser 389 | *.suo 390 | *.user 391 | *.userosscache 392 | *.sln.docstates 393 | 394 | # User-specific files (MonoDevelop/Xamarin Studio) 395 | *.userprefs 396 | 397 | # Mono auto generated files 398 | mono_crash.* 399 | 400 | # Build results 401 | [Dd]ebug/ 402 | [Dd]ebugPublic/ 403 | [Rr]elease/ 404 | [Rr]eleases/ 405 | x64/ 406 | x86/ 407 | [Ww][Ii][Nn]32/ 408 | [Aa][Rr][Mm]/ 409 | [Aa][Rr][Mm]64/ 410 | bld/ 411 | [Bb]in/ 412 | [Oo]bj/ 413 | [Ll]og/ 414 | [Ll]ogs/ 415 | 416 | # Visual Studio 2015/2017 cache/options directory 417 | .vs/ 418 | # Uncomment if you have tasks that create the project's static files in wwwroot 419 | #wwwroot/ 420 | 421 | # Visual Studio 2017 auto generated files 422 | Generated\ Files/ 423 | 424 | # MSTest test Results 425 | [Tt]est[Rr]esult*/ 426 | [Bb]uild[Ll]og.* 427 | 428 | # NUnit 429 | *.VisualState.xml 430 | TestResult.xml 431 | nunit-*.xml 432 | 433 | # Build Results of an ATL Project 434 | [Dd]ebugPS/ 435 | [Rr]eleasePS/ 436 | dlldata.c 437 | 438 | # Benchmark Results 439 | BenchmarkDotNet.Artifacts/ 440 | 441 | # .NET Core 442 | project.lock.json 443 | project.fragment.lock.json 444 | artifacts/ 445 | 446 | # ASP.NET Scaffolding 447 | ScaffoldingReadMe.txt 448 | 449 | # StyleCop 450 | StyleCopReport.xml 451 | 452 | # Files built by Visual Studio 453 | *_i.c 454 | *_p.c 455 | *_h.h 456 | *.ilk 457 | *.meta 458 | *.obj 459 | *.iobj 460 | *.pch 461 | *.pdb 462 | *.ipdb 463 | *.pgc 464 | *.pgd 465 | *.rsp 466 | *.sbr 467 | *.tlb 468 | *.tli 469 | *.tlh 470 | *.tmp 471 | *.tmp_proj 472 | *_wpftmp.csproj 473 | *.tlog 474 | *.vspscc 475 | *.vssscc 476 | .builds 477 | *.pidb 478 | *.svclog 479 | *.scc 480 | 481 | # Chutzpah Test files 482 | _Chutzpah* 483 | 484 | # Visual C++ cache files 485 | ipch/ 486 | *.aps 487 | *.ncb 488 | *.opendb 489 | *.opensdf 490 | *.sdf 491 | *.cachefile 492 | *.VC.db 493 | *.VC.VC.opendb 494 | 495 | # Visual Studio profiler 496 | *.psess 497 | *.vsp 498 | *.vspx 499 | *.sap 500 | 501 | # Visual Studio Trace Files 502 | *.e2e 503 | 504 | # TFS 2012 Local Workspace 505 | $tf/ 506 | 507 | # Guidance Automation Toolkit 508 | *.gpState 509 | 510 | # ReSharper is a .NET coding add-in 511 | _ReSharper*/ 512 | *.[Rr]e[Ss]harper 513 | *.DotSettings.user 514 | 515 | # TeamCity is a build add-in 516 | _TeamCity* 517 | 518 | # DotCover is a Code Coverage Tool 519 | *.dotCover 520 | 521 | # AxoCover is a Code Coverage Tool 522 | .axoCover/* 523 | !.axoCover/settings.json 524 | 525 | # Coverlet is a free, cross platform Code Coverage Tool 526 | coverage*.json 527 | coverage*.xml 528 | coverage*.info 529 | 530 | # Visual Studio code coverage results 531 | *.coverage 532 | *.coveragexml 533 | 534 | # NCrunch 535 | _NCrunch_* 536 | .*crunch*.local.xml 537 | nCrunchTemp_* 538 | 539 | # MightyMoose 540 | *.mm.* 541 | AutoTest.Net/ 542 | 543 | # Web workbench (sass) 544 | .sass-cache/ 545 | 546 | # Installshield output folder 547 | [Ee]xpress/ 548 | 549 | # DocProject is a documentation generator add-in 550 | DocProject/buildhelp/ 551 | DocProject/Help/*.HxT 552 | DocProject/Help/*.HxC 553 | DocProject/Help/*.hhc 554 | DocProject/Help/*.hhk 555 | DocProject/Help/*.hhp 556 | DocProject/Help/Html2 557 | DocProject/Help/html 558 | 559 | # Click-Once directory 560 | publish/ 561 | 562 | # Publish Web Output 563 | *.[Pp]ublish.xml 564 | *.azurePubxml 565 | # Note: Comment the next line if you want to checkin your web deploy settings, 566 | # but database connection strings (with potential passwords) will be unencrypted 567 | *.pubxml 568 | *.publishproj 569 | 570 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 571 | # checkin your Azure Web App publish settings, but sensitive information contained 572 | # in these scripts will be unencrypted 573 | PublishScripts/ 574 | 575 | # NuGet Packages 576 | *.nupkg 577 | # NuGet Symbol Packages 578 | *.snupkg 579 | # The packages folder can be ignored because of Package Restore 580 | **/[Pp]ackages/* 581 | # except build/, which is used as an MSBuild target. 582 | !**/[Pp]ackages/build/ 583 | # Uncomment if necessary however generally it will be regenerated when needed 584 | #!**/[Pp]ackages/repositories.config 585 | # NuGet v3's project.json files produces more ignorable files 586 | *.nuget.props 587 | *.nuget.targets 588 | 589 | # Microsoft Azure Build Output 590 | csx/ 591 | *.build.csdef 592 | 593 | # Microsoft Azure Emulator 594 | ecf/ 595 | rcf/ 596 | 597 | # Windows Store app package directories and files 598 | AppPackages/ 599 | BundleArtifacts/ 600 | Package.StoreAssociation.xml 601 | _pkginfo.txt 602 | *.appx 603 | *.appxbundle 604 | *.appxupload 605 | 606 | # Visual Studio cache files 607 | # files ending in .cache can be ignored 608 | *.[Cc]ache 609 | # but keep track of directories ending in .cache 610 | !?*.[Cc]ache/ 611 | 612 | # Others 613 | ClientBin/ 614 | ~$* 615 | *~ 616 | *.dbmdl 617 | *.dbproj.schemaview 618 | *.jfm 619 | *.pfx 620 | *.publishsettings 621 | orleans.codegen.cs 622 | 623 | # Including strong name files can present a security risk 624 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 625 | #*.snk 626 | 627 | # Since there are multiple workflows, uncomment next line to ignore bower_components 628 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 629 | #bower_components/ 630 | 631 | # RIA/Silverlight projects 632 | Generated_Code/ 633 | 634 | # Backup & report files from converting an old project file 635 | # to a newer Visual Studio version. Backup files are not needed, 636 | # because we have git ;-) 637 | _UpgradeReport_Files/ 638 | Backup*/ 639 | UpgradeLog*.XML 640 | UpgradeLog*.htm 641 | ServiceFabricBackup/ 642 | *.rptproj.bak 643 | 644 | # SQL Server files 645 | *.mdf 646 | *.ldf 647 | *.ndf 648 | 649 | # Business Intelligence projects 650 | *.rdl.data 651 | *.bim.layout 652 | *.bim_*.settings 653 | *.rptproj.rsuser 654 | *- [Bb]ackup.rdl 655 | *- [Bb]ackup ([0-9]).rdl 656 | *- [Bb]ackup ([0-9][0-9]).rdl 657 | 658 | # Microsoft Fakes 659 | FakesAssemblies/ 660 | 661 | # GhostDoc plugin setting file 662 | *.GhostDoc.xml 663 | 664 | # Node.js Tools for Visual Studio 665 | .ntvs_analysis.dat 666 | node_modules/ 667 | 668 | # Visual Studio 6 build log 669 | *.plg 670 | 671 | # Visual Studio 6 workspace options file 672 | *.opt 673 | 674 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 675 | *.vbw 676 | 677 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 678 | *.vbp 679 | 680 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 681 | *.dsw 682 | *.dsp 683 | 684 | # Visual Studio 6 technical files 685 | 686 | # Visual Studio LightSwitch build output 687 | **/*.HTMLClient/GeneratedArtifacts 688 | **/*.DesktopClient/GeneratedArtifacts 689 | **/*.DesktopClient/ModelManifest.xml 690 | **/*.Server/GeneratedArtifacts 691 | **/*.Server/ModelManifest.xml 692 | _Pvt_Extensions 693 | 694 | # Paket dependency manager 695 | .paket/paket.exe 696 | paket-files/ 697 | 698 | # FAKE - F# Make 699 | .fake/ 700 | 701 | # CodeRush personal settings 702 | .cr/personal 703 | 704 | # Python Tools for Visual Studio (PTVS) 705 | *.pyc 706 | 707 | # Cake - Uncomment if you are using it 708 | # tools/** 709 | # !tools/packages.config 710 | 711 | # Tabs Studio 712 | *.tss 713 | 714 | # Telerik's JustMock configuration file 715 | *.jmconfig 716 | 717 | # BizTalk build output 718 | *.btp.cs 719 | *.btm.cs 720 | *.odx.cs 721 | *.xsd.cs 722 | 723 | # OpenCover UI analysis results 724 | OpenCover/ 725 | 726 | # Azure Stream Analytics local run output 727 | ASALocalRun/ 728 | 729 | # MSBuild Binary and Structured Log 730 | *.binlog 731 | 732 | # NVidia Nsight GPU debugger configuration file 733 | *.nvuser 734 | 735 | # MFractors (Xamarin productivity tool) working folder 736 | .mfractor/ 737 | 738 | # Local History for Visual Studio 739 | .localhistory/ 740 | 741 | # Visual Studio History (VSHistory) files 742 | .vshistory/ 743 | 744 | # BeatPulse healthcheck temp database 745 | healthchecksdb 746 | 747 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 748 | MigrationBackup/ 749 | 750 | # Ionide (cross platform F# VS Code tools) working folder 751 | .ionide/ 752 | 753 | # Fody - auto-generated XML schema 754 | FodyWeavers.xsd 755 | 756 | # VS Code files for those working on multiple tools 757 | *.code-workspace 758 | 759 | # Local History for Visual Studio Code 760 | 761 | # Windows Installer files from build outputs 762 | 763 | # JetBrains Rider 764 | *.sln.iml 765 | 766 | ### VisualStudio Patch ### 767 | # Additional files built by Visual Studio 768 | 769 | # End of https://www.toptal.com/developers/gitignore/api/windows,macos,python,visualstudio,visualstudiocode,pycharm,jupyternotebooks,dotenv --------------------------------------------------------------------------------